/*
 * Copyright Codeplay Software Ltd.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use these files except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

// DO NOT MODIFY BY HAND
// This file was automatically generated by generate_conv2d_tests.py.
// Results calculated using Tensorflow v1.12.0.

#include <gtest/gtest.h>

#include "sycldnn/padding_mode.h"

#include "test/types/cartesian_product.h"
#include "test/types/kernel_data_types.h"
#include "test/types/nested_pairs_to_triple.h"
#include "test/types/test_backend_types.h"
#include "test/types/to_gtest_types.h"

#include "test/conv2d/selector_list.h"
#include "test/conv2d/window_stride_fixture.h"

#include <array>
#include <vector>

using DataTypeList = sycldnn::types::KernelDataTypes;
using Selectors = sycldnn::types::SelectorList;
using Backends = sycldnn::types::AllBackendTypes;

using SNNTypePairs =
    sycldnn::types::CartesianProduct<Selectors, DataTypeList>::type;
using BackendTypePairs =
    sycldnn::types::CartesianProduct<SNNTypePairs, Backends>::type;
using TestTriples = sycldnn::types::NestedPairsToTriple<BackendTypePairs>::type;

using GTestTypeTriples = sycldnn::types::ToGTestTypes<TestTriples>::type;

template <typename Pair>
using InputBackpropWindow1Stride2 = WindowStrideTest<Pair, 1, 2>;
TYPED_TEST_SUITE(InputBackpropWindow1Stride2, GTestTypeTriples);
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x3x3x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {1., 0., 2., 0., 0., 0., 3., 0., 4.};
  const std::array<int, 4> in_shape = {{1, 3, 3, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x3x3x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {1., 0., 2., 0., 0., 0., 3., 0., 4.};
  const std::array<int, 4> in_shape = {{1, 3, 3, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x3x3x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {5., 0., 11., 0., 0., 0., 17., 0., 23.};
  const std::array<int, 4> in_shape = {{1, 3, 3, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x3x3x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {5., 0., 11., 0., 0., 0., 17., 0., 23.};
  const std::array<int, 4> in_shape = {{1, 3, 3, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x3x3x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {30., 0.,   70., 0.,  0.,
                                         0.,  110., 0.,  150.};
  const std::array<int, 4> in_shape = {{1, 3, 3, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x3x3x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {30., 0.,   70., 0.,  0.,
                                         0.,  110., 0.,  150.};
  const std::array<int, 4> in_shape = {{1, 3, 3, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x3x3x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {1., 2., 0., 0., 2., 4., 0., 0., 0.,
                                         0., 0., 0., 3., 6., 0., 0., 4., 8.};
  const std::array<int, 4> in_shape = {{1, 3, 3, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x3x3x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {1., 2., 0., 0., 2., 4., 0., 0., 0.,
                                         0., 0., 0., 3., 6., 0., 0., 4., 8.};
  const std::array<int, 4> in_shape = {{1, 3, 3, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x3x3x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {5.,  11., 0., 0., 11., 25.,
                                         0.,  0.,  0., 0., 0.,  0.,
                                         17., 39., 0., 0., 23., 53.};
  const std::array<int, 4> in_shape = {{1, 3, 3, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x3x3x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {5.,  11., 0., 0., 11., 25.,
                                         0.,  0.,  0., 0., 0.,  0.,
                                         17., 39., 0., 0., 23., 53.};
  const std::array<int, 4> in_shape = {{1, 3, 3, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x3x3x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {30.,  70.,  0., 0., 70.,  174.,
                                         0.,   0.,   0., 0., 0.,   0.,
                                         110., 278., 0., 0., 150., 382.};
  const std::array<int, 4> in_shape = {{1, 3, 3, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x3x3x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {30.,  70.,  0., 0., 70.,  174.,
                                         0.,   0.,   0., 0., 0.,   0.,
                                         110., 278., 0., 0., 150., 382.};
  const std::array<int, 4> in_shape = {{1, 3, 3, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x3x3x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {1.,  2., 3., 4., 0., 0., 0., 0.,  2.,
                                         4.,  6., 8., 0., 0., 0., 0., 0.,  0.,
                                         0.,  0., 0., 0., 0., 0., 3., 6.,  9.,
                                         12., 0., 0., 0., 0., 4., 8., 12., 16.};
  const std::array<int, 4> in_shape = {{1, 3, 3, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x3x3x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {1.,  2., 3., 4., 0., 0., 0., 0.,  2.,
                                         4.,  6., 8., 0., 0., 0., 0., 0.,  0.,
                                         0.,  0., 0., 0., 0., 0., 3., 6.,  9.,
                                         12., 0., 0., 0., 0., 4., 8., 12., 16.};
  const std::array<int, 4> in_shape = {{1, 3, 3, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x3x3x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,  11., 17., 23., 0., 0., 0., 0., 11., 25., 39., 53.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,
      17., 39., 61., 83., 0., 0., 0., 0., 23., 53., 83., 113.};
  const std::array<int, 4> in_shape = {{1, 3, 3, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x3x3x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,  11., 17., 23., 0., 0., 0., 0., 11., 25., 39., 53.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,
      17., 39., 61., 83., 0., 0., 0., 0., 23., 53., 83., 113.};
  const std::array<int, 4> in_shape = {{1, 3, 3, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x3x3x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,  70.,  110., 150., 0., 0., 0., 0., 70.,  174., 278., 382.,
      0.,   0.,   0.,   0.,   0., 0., 0., 0., 0.,   0.,   0.,   0.,
      110., 278., 446., 614., 0., 0., 0., 0., 150., 382., 614., 846.};
  const std::array<int, 4> in_shape = {{1, 3, 3, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x3x3x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,  70.,  110., 150., 0., 0., 0., 0., 70.,  174., 278., 382.,
      0.,   0.,   0.,   0.,   0., 0., 0., 0., 0.,   0.,   0.,   0.,
      110., 278., 446., 614., 0., 0., 0., 0., 150., 382., 614., 846.};
  const std::array<int, 4> in_shape = {{1, 3, 3, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x3x4x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {1., 0., 2., 0., 0., 0.,
                                         0., 0., 3., 0., 4., 0.};
  const std::array<int, 4> in_shape = {{1, 3, 4, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x3x4x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {1., 0., 2., 0., 0., 0.,
                                         0., 0., 3., 0., 4., 0.};
  const std::array<int, 4> in_shape = {{1, 3, 4, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x3x4x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {5., 0., 11., 0., 0.,  0.,
                                         0., 0., 17., 0., 23., 0.};
  const std::array<int, 4> in_shape = {{1, 3, 4, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x3x4x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {5., 0., 11., 0., 0.,  0.,
                                         0., 0., 17., 0., 23., 0.};
  const std::array<int, 4> in_shape = {{1, 3, 4, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x3x4x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {30., 0., 70.,  0., 0.,   0.,
                                         0.,  0., 110., 0., 150., 0.};
  const std::array<int, 4> in_shape = {{1, 3, 4, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x3x4x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {30., 0., 70.,  0., 0.,   0.,
                                         0.,  0., 110., 0., 150., 0.};
  const std::array<int, 4> in_shape = {{1, 3, 4, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x3x4x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {1., 2., 0., 0., 2., 4., 0., 0.,
                                         0., 0., 0., 0., 0., 0., 0., 0.,
                                         3., 6., 0., 0., 4., 8., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 3, 4, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x3x4x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {1., 2., 0., 0., 2., 4., 0., 0.,
                                         0., 0., 0., 0., 0., 0., 0., 0.,
                                         3., 6., 0., 0., 4., 8., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 3, 4, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x3x4x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {5.,  11., 0., 0., 11., 25., 0., 0.,
                                         0.,  0.,  0., 0., 0.,  0.,  0., 0.,
                                         17., 39., 0., 0., 23., 53., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 3, 4, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x3x4x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {5.,  11., 0., 0., 11., 25., 0., 0.,
                                         0.,  0.,  0., 0., 0.,  0.,  0., 0.,
                                         17., 39., 0., 0., 23., 53., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 3, 4, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x3x4x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30., 70., 0., 0., 70.,  174., 0., 0., 0.,   0.,   0., 0.,
      0.,  0.,  0., 0., 110., 278., 0., 0., 150., 382., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 3, 4, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x3x4x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30., 70., 0., 0., 70.,  174., 0., 0., 0.,   0.,   0., 0.,
      0.,  0.,  0., 0., 110., 278., 0., 0., 150., 382., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 3, 4, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x3x4x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1., 2., 3., 4.,  0., 0., 0., 0., 2., 4., 6.,  8.,  0., 0., 0., 0.,
      0., 0., 0., 0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0.,
      3., 6., 9., 12., 0., 0., 0., 0., 4., 8., 12., 16., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 3, 4, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x3x4x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1., 2., 3., 4.,  0., 0., 0., 0., 2., 4., 6.,  8.,  0., 0., 0., 0.,
      0., 0., 0., 0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0.,
      3., 6., 9., 12., 0., 0., 0., 0., 4., 8., 12., 16., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 3, 4, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x3x4x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,  11., 17., 23., 0., 0., 0., 0., 11., 25., 39., 53.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,   0., 0., 0., 0.,
      17., 39., 61., 83., 0., 0., 0., 0., 23., 53., 83., 113., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 3, 4, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x3x4x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,  11., 17., 23., 0., 0., 0., 0., 11., 25., 39., 53.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,   0., 0., 0., 0.,
      17., 39., 61., 83., 0., 0., 0., 0., 23., 53., 83., 113., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 3, 4, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x3x4x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30., 70., 110., 150., 0.,   0.,   0.,   0.,   70.,  174., 278., 382.,
      0.,  0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,  0.,  0.,   0.,   0.,   0.,   0.,   0.,   110., 278., 446., 614.,
      0.,  0.,  0.,   0.,   150., 382., 614., 846., 0.,   0.,   0.,   0.};
  const std::array<int, 4> in_shape = {{1, 3, 4, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x3x4x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30., 70., 110., 150., 0.,   0.,   0.,   0.,   70.,  174., 278., 382.,
      0.,  0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,  0.,  0.,   0.,   0.,   0.,   0.,   0.,   110., 278., 446., 614.,
      0.,  0.,  0.,   0.,   150., 382., 614., 846., 0.,   0.,   0.,   0.};
  const std::array<int, 4> in_shape = {{1, 3, 4, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x3x6x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {1., 0., 2., 0., 3., 0., 0., 0., 0.,
                                         0., 0., 0., 4., 0., 5., 0., 6., 0.};
  const std::array<int, 4> in_shape = {{1, 3, 6, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x3x6x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {1., 0., 2., 0., 3., 0., 0., 0., 0.,
                                         0., 0., 0., 4., 0., 5., 0., 6., 0.};
  const std::array<int, 4> in_shape = {{1, 3, 6, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x3x6x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {5.,  0., 11., 0., 17., 0.,
                                         0.,  0., 0.,  0., 0.,  0.,
                                         23., 0., 29., 0., 35., 0.};
  const std::array<int, 4> in_shape = {{1, 3, 6, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x3x6x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {5.,  0., 11., 0., 17., 0.,
                                         0.,  0., 0.,  0., 0.,  0.,
                                         23., 0., 29., 0., 35., 0.};
  const std::array<int, 4> in_shape = {{1, 3, 6, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x3x6x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {30.,  0., 70.,  0., 110., 0.,
                                         0.,   0., 0.,   0., 0.,   0.,
                                         150., 0., 190., 0., 230., 0.};
  const std::array<int, 4> in_shape = {{1, 3, 6, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x3x6x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {30.,  0., 70.,  0., 110., 0.,
                                         0.,   0., 0.,   0., 0.,   0.,
                                         150., 0., 190., 0., 230., 0.};
  const std::array<int, 4> in_shape = {{1, 3, 6, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x3x6x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1., 2., 0., 0., 2., 4., 0., 0., 3., 6., 0., 0.,  0., 0., 0., 0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 4., 8., 0., 0., 5., 10., 0., 0., 6., 12., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 3, 6, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x3x6x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1., 2., 0., 0., 2., 4., 0., 0., 3., 6., 0., 0.,  0., 0., 0., 0.,  0., 0.,
      0., 0., 0., 0., 0., 0., 4., 8., 0., 0., 5., 10., 0., 0., 6., 12., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 3, 6, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x3x6x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,  11., 0., 0., 11., 25., 0., 0., 17., 39., 0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      23., 53., 0., 0., 29., 67., 0., 0., 35., 81., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 3, 6, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x3x6x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,  11., 0., 0., 11., 25., 0., 0., 17., 39., 0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      23., 53., 0., 0., 29., 67., 0., 0., 35., 81., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 3, 6, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x3x6x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,  70.,  0., 0., 70.,  174., 0., 0., 110., 278., 0., 0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0., 0.,
      150., 382., 0., 0., 190., 486., 0., 0., 230., 590., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 3, 6, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x3x6x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,  70.,  0., 0., 70.,  174., 0., 0., 110., 278., 0., 0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0., 0.,
      150., 382., 0., 0., 190., 486., 0., 0., 230., 590., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 3, 6, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x3x6x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1., 2., 3., 4., 0.,  0.,  0.,  0.,  2., 4., 6., 8., 0.,  0.,  0.,
      0., 3., 6., 9., 12., 0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,
      0., 0., 0., 4., 8.,  12., 16., 0.,  0., 0., 0., 5., 10., 15., 20.,
      0., 0., 0., 0., 6.,  12., 18., 24., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 3, 6, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x3x6x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1., 2., 3., 4., 0.,  0.,  0.,  0.,  2., 4., 6., 8., 0.,  0.,  0.,
      0., 3., 6., 9., 12., 0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,
      0., 0., 0., 4., 8.,  12., 16., 0.,  0., 0., 0., 5., 10., 15., 20.,
      0., 0., 0., 0., 6.,  12., 18., 24., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 3, 6, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x3x6x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,  11., 17., 23.,  0.,  0.,  0.,   0.,   11., 25., 39.,  53.,
      0.,  0.,  0.,  0.,   17., 39., 61.,  83.,  0.,  0.,  0.,   0.,
      0.,  0.,  0.,  0.,   0.,  0.,  0.,   0.,   0.,  0.,  0.,   0.,
      0.,  0.,  0.,  0.,   0.,  0.,  0.,   0.,   0.,  0.,  0.,   0.,
      23., 53., 83., 113., 0.,  0.,  0.,   0.,   29., 67., 105., 143.,
      0.,  0.,  0.,  0.,   35., 81., 127., 173., 0.,  0.,  0.,   0.};
  const std::array<int, 4> in_shape = {{1, 3, 6, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x3x6x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,  11., 17., 23.,  0.,  0.,  0.,   0.,   11., 25., 39.,  53.,
      0.,  0.,  0.,  0.,   17., 39., 61.,  83.,  0.,  0.,  0.,   0.,
      0.,  0.,  0.,  0.,   0.,  0.,  0.,   0.,   0.,  0.,  0.,   0.,
      0.,  0.,  0.,  0.,   0.,  0.,  0.,   0.,   0.,  0.,  0.,   0.,
      23., 53., 83., 113., 0.,  0.,  0.,   0.,   29., 67., 105., 143.,
      0.,  0.,  0.,  0.,   35., 81., 127., 173., 0.,  0.,  0.,   0.};
  const std::array<int, 4> in_shape = {{1, 3, 6, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x3x6x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,  70.,  110., 150., 0.,   0.,   0.,   0.,    70.,  174., 278., 382.,
      0.,   0.,   0.,   0.,   110., 278., 446., 614.,  0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,    0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,    0.,   0.,   0.,   0.,
      150., 382., 614., 846., 0.,   0.,   0.,   0.,    190., 486., 782., 1078.,
      0.,   0.,   0.,   0.,   230., 590., 950., 1310., 0.,   0.,   0.,   0.};
  const std::array<int, 4> in_shape = {{1, 3, 6, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x3x6x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,  70.,  110., 150., 0.,   0.,   0.,   0.,    70.,  174., 278., 382.,
      0.,   0.,   0.,   0.,   110., 278., 446., 614.,  0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,    0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,    0.,   0.,   0.,   0.,
      150., 382., 614., 846., 0.,   0.,   0.,   0.,    190., 486., 782., 1078.,
      0.,   0.,   0.,   0.,   230., 590., 950., 1310., 0.,   0.,   0.,   0.};
  const std::array<int, 4> in_shape = {{1, 3, 6, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x4x3x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {1., 0., 2., 0., 0., 0.,
                                         3., 0., 4., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 4, 3, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x4x3x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {1., 0., 2., 0., 0., 0.,
                                         3., 0., 4., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 4, 3, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x4x3x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {5.,  0., 11., 0., 0., 0.,
                                         17., 0., 23., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 4, 3, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x4x3x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {5.,  0., 11., 0., 0., 0.,
                                         17., 0., 23., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 4, 3, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x4x3x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {30.,  0., 70.,  0., 0., 0.,
                                         110., 0., 150., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 4, 3, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x4x3x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {30.,  0., 70.,  0., 0., 0.,
                                         110., 0., 150., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 4, 3, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x4x3x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {1., 2., 0., 0., 2., 4., 0., 0.,
                                         0., 0., 0., 0., 3., 6., 0., 0.,
                                         4., 8., 0., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 4, 3, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x4x3x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {1., 2., 0., 0., 2., 4., 0., 0.,
                                         0., 0., 0., 0., 3., 6., 0., 0.,
                                         4., 8., 0., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 4, 3, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x4x3x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {5.,  11., 0., 0., 11., 25., 0., 0.,
                                         0.,  0.,  0., 0., 17., 39., 0., 0.,
                                         23., 53., 0., 0., 0.,  0.,  0., 0.};
  const std::array<int, 4> in_shape = {{1, 4, 3, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x4x3x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {5.,  11., 0., 0., 11., 25., 0., 0.,
                                         0.,  0.,  0., 0., 17., 39., 0., 0.,
                                         23., 53., 0., 0., 0.,  0.,  0., 0.};
  const std::array<int, 4> in_shape = {{1, 4, 3, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x4x3x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,  70.,  0., 0., 70.,  174., 0., 0., 0., 0., 0., 0.,
      110., 278., 0., 0., 150., 382., 0., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 4, 3, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x4x3x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,  70.,  0., 0., 70.,  174., 0., 0., 0., 0., 0., 0.,
      110., 278., 0., 0., 150., 382., 0., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 4, 3, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x4x3x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1., 2., 3.,  4.,  0., 0., 0., 0., 2., 4., 6., 8.,  0., 0., 0., 0.,
      0., 0., 0.,  0.,  0., 0., 0., 0., 3., 6., 9., 12., 0., 0., 0., 0.,
      4., 8., 12., 16., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 4, 3, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x4x3x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1., 2., 3.,  4.,  0., 0., 0., 0., 2., 4., 6., 8.,  0., 0., 0., 0.,
      0., 0., 0.,  0.,  0., 0., 0., 0., 3., 6., 9., 12., 0., 0., 0., 0.,
      4., 8., 12., 16., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 4, 3, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x4x3x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,  11., 17., 23.,  0., 0., 0., 0., 11., 25., 39., 53., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,   0., 0., 0., 0., 17., 39., 61., 83., 0., 0., 0., 0.,
      23., 53., 83., 113., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 4, 3, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x4x3x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,  11., 17., 23.,  0., 0., 0., 0., 11., 25., 39., 53., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,   0., 0., 0., 0., 17., 39., 61., 83., 0., 0., 0., 0.,
      23., 53., 83., 113., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 4, 3, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x4x3x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,  70.,  110., 150., 0., 0., 0., 0., 70.,  174., 278., 382.,
      0.,   0.,   0.,   0.,   0., 0., 0., 0., 0.,   0.,   0.,   0.,
      110., 278., 446., 614., 0., 0., 0., 0., 150., 382., 614., 846.,
      0.,   0.,   0.,   0.,   0., 0., 0., 0., 0.,   0.,   0.,   0.};
  const std::array<int, 4> in_shape = {{1, 4, 3, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x4x3x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,  70.,  110., 150., 0., 0., 0., 0., 70.,  174., 278., 382.,
      0.,   0.,   0.,   0.,   0., 0., 0., 0., 0.,   0.,   0.,   0.,
      110., 278., 446., 614., 0., 0., 0., 0., 150., 382., 614., 846.,
      0.,   0.,   0.,   0.,   0., 0., 0., 0., 0.,   0.,   0.,   0.};
  const std::array<int, 4> in_shape = {{1, 4, 3, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x4x4x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {1., 0., 2., 0., 0., 0., 0., 0.,
                                         3., 0., 4., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 4, 4, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x4x4x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {1., 0., 2., 0., 0., 0., 0., 0.,
                                         3., 0., 4., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 4, 4, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x4x4x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {5.,  0., 11., 0., 0., 0., 0., 0.,
                                         17., 0., 23., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 4, 4, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x4x4x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {5.,  0., 11., 0., 0., 0., 0., 0.,
                                         17., 0., 23., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 4, 4, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x4x4x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {30.,  0., 70.,  0., 0., 0., 0., 0.,
                                         110., 0., 150., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 4, 4, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x4x4x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {30.,  0., 70.,  0., 0., 0., 0., 0.,
                                         110., 0., 150., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 4, 4, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x4x4x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1., 2., 0., 0., 2., 4., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      3., 6., 0., 0., 4., 8., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 4, 4, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x4x4x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1., 2., 0., 0., 2., 4., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      3., 6., 0., 0., 4., 8., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 4, 4, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x4x4x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,  11., 0., 0., 11., 25., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      17., 39., 0., 0., 23., 53., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 4, 4, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x4x4x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,  11., 0., 0., 11., 25., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      17., 39., 0., 0., 23., 53., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 4, 4, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x4x4x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,  70.,  0., 0., 70.,  174., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      110., 278., 0., 0., 150., 382., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 4, 4, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x4x4x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,  70.,  0., 0., 70.,  174., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      110., 278., 0., 0., 150., 382., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 4, 4, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x4x4x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1., 2., 3., 4.,  0., 0., 0., 0., 2., 4., 6.,  8.,  0., 0., 0., 0.,
      0., 0., 0., 0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0.,
      3., 6., 9., 12., 0., 0., 0., 0., 4., 8., 12., 16., 0., 0., 0., 0.,
      0., 0., 0., 0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 4, 4, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x4x4x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1., 2., 3., 4.,  0., 0., 0., 0., 2., 4., 6.,  8.,  0., 0., 0., 0.,
      0., 0., 0., 0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0.,
      3., 6., 9., 12., 0., 0., 0., 0., 4., 8., 12., 16., 0., 0., 0., 0.,
      0., 0., 0., 0.,  0., 0., 0., 0., 0., 0., 0.,  0.,  0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 4, 4, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x4x4x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,  11., 17., 23., 0., 0., 0., 0., 11., 25., 39., 53.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,   0., 0., 0., 0.,
      17., 39., 61., 83., 0., 0., 0., 0., 23., 53., 83., 113., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,   0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 4, 4, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x4x4x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,  11., 17., 23., 0., 0., 0., 0., 11., 25., 39., 53.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,   0., 0., 0., 0.,
      17., 39., 61., 83., 0., 0., 0., 0., 23., 53., 83., 113., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,   0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 4, 4, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x4x4x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30., 70.,  110., 150., 0.,   0., 0.,   0.,   70.,  174., 278., 382., 0.,
      0.,  0.,   0.,   0.,   0.,   0., 0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,   0., 110., 278., 446., 614., 0.,   0.,   0.,
      0.,  150., 382., 614., 846., 0., 0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,   0., 0.,   0.,   0.,   0.,   0.,   0.};
  const std::array<int, 4> in_shape = {{1, 4, 4, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x4x4x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30., 70.,  110., 150., 0.,   0., 0.,   0.,   70.,  174., 278., 382., 0.,
      0.,  0.,   0.,   0.,   0.,   0., 0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,   0., 110., 278., 446., 614., 0.,   0.,   0.,
      0.,  150., 382., 614., 846., 0., 0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,   0., 0.,   0.,   0.,   0.,   0.,   0.};
  const std::array<int, 4> in_shape = {{1, 4, 4, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x4x6x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {1., 0., 2., 0., 3., 0., 0., 0.,
                                         0., 0., 0., 0., 4., 0., 5., 0.,
                                         6., 0., 0., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 4, 6, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x4x6x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {1., 0., 2., 0., 3., 0., 0., 0.,
                                         0., 0., 0., 0., 4., 0., 5., 0.,
                                         6., 0., 0., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 4, 6, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x4x6x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {5.,  0., 11., 0., 17., 0., 0.,  0.,
                                         0.,  0., 0.,  0., 23., 0., 29., 0.,
                                         35., 0., 0.,  0., 0.,  0., 0.,  0.};
  const std::array<int, 4> in_shape = {{1, 4, 6, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x4x6x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {5.,  0., 11., 0., 17., 0., 0.,  0.,
                                         0.,  0., 0.,  0., 23., 0., 29., 0.,
                                         35., 0., 0.,  0., 0.,  0., 0.,  0.};
  const std::array<int, 4> in_shape = {{1, 4, 6, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x4x6x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {30.,  0., 70., 0., 110., 0., 0.,   0.,
                                         0.,   0., 0.,  0., 150., 0., 190., 0.,
                                         230., 0., 0.,  0., 0.,   0., 0.,   0.};
  const std::array<int, 4> in_shape = {{1, 4, 6, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x4x6x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {30.,  0., 70., 0., 110., 0., 0.,   0.,
                                         0.,   0., 0.,  0., 150., 0., 190., 0.,
                                         230., 0., 0.,  0., 0.,   0., 0.,   0.};
  const std::array<int, 4> in_shape = {{1, 4, 6, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x4x6x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1., 2.,  0., 0., 2., 4., 0., 0., 3., 6., 0., 0., 0., 0.,  0., 0.,
      0., 0.,  0., 0., 0., 0., 0., 0., 4., 8., 0., 0., 5., 10., 0., 0.,
      6., 12., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0.};
  const std::array<int, 4> in_shape = {{1, 4, 6, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x4x6x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1., 2.,  0., 0., 2., 4., 0., 0., 3., 6., 0., 0., 0., 0.,  0., 0.,
      0., 0.,  0., 0., 0., 0., 0., 0., 4., 8., 0., 0., 5., 10., 0., 0.,
      6., 12., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,  0., 0.};
  const std::array<int, 4> in_shape = {{1, 4, 6, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x4x6x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,  11., 0., 0., 11., 25., 0., 0., 17., 39., 0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 23., 53., 0., 0., 29., 67., 0., 0.,
      35., 81., 0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.};
  const std::array<int, 4> in_shape = {{1, 4, 6, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x4x6x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,  11., 0., 0., 11., 25., 0., 0., 17., 39., 0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 23., 53., 0., 0., 29., 67., 0., 0.,
      35., 81., 0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.};
  const std::array<int, 4> in_shape = {{1, 4, 6, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x4x6x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,  70.,  0., 0., 70.,  174., 0., 0., 110., 278., 0., 0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0., 0.,
      150., 382., 0., 0., 190., 486., 0., 0., 230., 590., 0., 0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0., 0.};
  const std::array<int, 4> in_shape = {{1, 4, 6, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x4x6x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,  70.,  0., 0., 70.,  174., 0., 0., 110., 278., 0., 0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0., 0.,
      150., 382., 0., 0., 190., 486., 0., 0., 230., 590., 0., 0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0., 0.};
  const std::array<int, 4> in_shape = {{1, 4, 6, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x4x6x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1., 2.,  3.,  4.,  0., 0., 0., 0., 2., 4.,  6.,  8.,  0., 0., 0., 0.,
      3., 6.,  9.,  12., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0.,  0.,  0.,  0., 0., 0., 0., 0., 0.,  0.,  0.,  0., 0., 0., 0.,
      4., 8.,  12., 16., 0., 0., 0., 0., 5., 10., 15., 20., 0., 0., 0., 0.,
      6., 12., 18., 24., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0.,  0.,  0.,  0., 0., 0., 0., 0., 0.,  0.,  0.,  0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 4, 6, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x4x6x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1., 2.,  3.,  4.,  0., 0., 0., 0., 2., 4.,  6.,  8.,  0., 0., 0., 0.,
      3., 6.,  9.,  12., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0.,  0.,  0.,  0., 0., 0., 0., 0., 0.,  0.,  0.,  0., 0., 0., 0.,
      4., 8.,  12., 16., 0., 0., 0., 0., 5., 10., 15., 20., 0., 0., 0., 0.,
      6., 12., 18., 24., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0.,  0.,  0.,  0., 0., 0., 0., 0., 0.,  0.,  0.,  0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 4, 6, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x4x6x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,  11., 17.,  23.,  0.,  0.,  0.,  0.,  11., 25.,  39.,  53.,  0., 0.,
      0.,  0.,  17.,  39.,  61., 83., 0.,  0.,  0.,  0.,   0.,   0.,   0., 0.,
      0.,  0.,  0.,   0.,   0.,  0.,  0.,  0.,  0.,  0.,   0.,   0.,   0., 0.,
      0.,  0.,  0.,   0.,   0.,  0.,  23., 53., 83., 113., 0.,   0.,   0., 0.,
      29., 67., 105., 143., 0.,  0.,  0.,  0.,  35., 81.,  127., 173., 0., 0.,
      0.,  0.,  0.,   0.,   0.,  0.,  0.,  0.,  0.,  0.,   0.,   0.,   0., 0.,
      0.,  0.,  0.,   0.,   0.,  0.,  0.,  0.,  0.,  0.,   0.,   0.};
  const std::array<int, 4> in_shape = {{1, 4, 6, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x4x6x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,  11., 17.,  23.,  0.,  0.,  0.,  0.,  11., 25.,  39.,  53.,  0., 0.,
      0.,  0.,  17.,  39.,  61., 83., 0.,  0.,  0.,  0.,   0.,   0.,   0., 0.,
      0.,  0.,  0.,   0.,   0.,  0.,  0.,  0.,  0.,  0.,   0.,   0.,   0., 0.,
      0.,  0.,  0.,   0.,   0.,  0.,  23., 53., 83., 113., 0.,   0.,   0., 0.,
      29., 67., 105., 143., 0.,  0.,  0.,  0.,  35., 81.,  127., 173., 0., 0.,
      0.,  0.,  0.,   0.,   0.,  0.,  0.,  0.,  0.,  0.,   0.,   0.,   0., 0.,
      0.,  0.,  0.,   0.,   0.,  0.,  0.,  0.,  0.,  0.,   0.,   0.};
  const std::array<int, 4> in_shape = {{1, 4, 6, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x4x6x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,  70.,  110., 150., 0.,   0.,   0.,   0.,    70.,  174., 278., 382.,
      0.,   0.,   0.,   0.,   110., 278., 446., 614.,  0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,    0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,    0.,   0.,   0.,   0.,
      150., 382., 614., 846., 0.,   0.,   0.,   0.,    190., 486., 782., 1078.,
      0.,   0.,   0.,   0.,   230., 590., 950., 1310., 0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,    0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,    0.,   0.,   0.,   0.};
  const std::array<int, 4> in_shape = {{1, 4, 6, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x4x6x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,  70.,  110., 150., 0.,   0.,   0.,   0.,    70.,  174., 278., 382.,
      0.,   0.,   0.,   0.,   110., 278., 446., 614.,  0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,    0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,    0.,   0.,   0.,   0.,
      150., 382., 614., 846., 0.,   0.,   0.,   0.,    190., 486., 782., 1078.,
      0.,   0.,   0.,   0.,   230., 590., 950., 1310., 0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,    0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,    0.,   0.,   0.,   0.};
  const std::array<int, 4> in_shape = {{1, 4, 6, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x6x3x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {1., 0., 2., 0., 0., 0., 3., 0., 4.,
                                         0., 0., 0., 5., 0., 6., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 6, 3, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x6x3x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {1., 0., 2., 0., 0., 0., 3., 0., 4.,
                                         0., 0., 0., 5., 0., 6., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 6, 3, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x6x3x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {5.,  0., 11., 0., 0., 0.,
                                         17., 0., 23., 0., 0., 0.,
                                         29., 0., 35., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 6, 3, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x6x3x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {5.,  0., 11., 0., 0., 0.,
                                         17., 0., 23., 0., 0., 0.,
                                         29., 0., 35., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 6, 3, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x6x3x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {30.,  0., 70.,  0., 0., 0.,
                                         110., 0., 150., 0., 0., 0.,
                                         190., 0., 230., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 6, 3, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x6x3x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {30.,  0., 70.,  0., 0., 0.,
                                         110., 0., 150., 0., 0., 0.,
                                         190., 0., 230., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 6, 3, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x6x3x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1., 2., 0., 0., 2., 4., 0., 0.,  0., 0., 0., 0.,  3., 6., 0., 0., 4., 8.,
      0., 0., 0., 0., 0., 0., 5., 10., 0., 0., 6., 12., 0., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 6, 3, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x6x3x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1., 2., 0., 0., 2., 4., 0., 0.,  0., 0., 0., 0.,  3., 6., 0., 0., 4., 8.,
      0., 0., 0., 0., 0., 0., 5., 10., 0., 0., 6., 12., 0., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 6, 3, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x6x3x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,  11., 0., 0., 11., 25., 0., 0., 0., 0., 0., 0.,
      17., 39., 0., 0., 23., 53., 0., 0., 0., 0., 0., 0.,
      29., 67., 0., 0., 35., 81., 0., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 6, 3, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x6x3x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,  11., 0., 0., 11., 25., 0., 0., 0., 0., 0., 0.,
      17., 39., 0., 0., 23., 53., 0., 0., 0., 0., 0., 0.,
      29., 67., 0., 0., 35., 81., 0., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 6, 3, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x6x3x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,  70.,  0., 0., 70.,  174., 0., 0., 0., 0., 0., 0.,
      110., 278., 0., 0., 150., 382., 0., 0., 0., 0., 0., 0.,
      190., 486., 0., 0., 230., 590., 0., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 6, 3, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x6x3x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,  70.,  0., 0., 70.,  174., 0., 0., 0., 0., 0., 0.,
      110., 278., 0., 0., 150., 382., 0., 0., 0., 0., 0., 0.,
      190., 486., 0., 0., 230., 590., 0., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 6, 3, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x6x3x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1., 2., 3., 4., 0.,  0.,  0.,  0., 2., 4., 6., 8., 0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0., 0., 3., 6., 9., 12., 0.,  0.,
      0., 0., 4., 8., 12., 16., 0.,  0., 0., 0., 0., 0., 0.,  0.,  0.,
      0., 0., 0., 5., 10., 15., 20., 0., 0., 0., 0., 6., 12., 18., 24.,
      0., 0., 0., 0., 0.,  0.,  0.,  0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 6, 3, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x6x3x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1., 2., 3., 4., 0.,  0.,  0.,  0., 2., 4., 6., 8., 0.,  0.,  0.,
      0., 0., 0., 0., 0.,  0.,  0.,  0., 0., 3., 6., 9., 12., 0.,  0.,
      0., 0., 4., 8., 12., 16., 0.,  0., 0., 0., 0., 0., 0.,  0.,  0.,
      0., 0., 0., 5., 10., 15., 20., 0., 0., 0., 0., 6., 12., 18., 24.,
      0., 0., 0., 0., 0.,  0.,  0.,  0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 6, 3, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x6x3x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,  11., 17.,  23.,  0., 0., 0., 0., 11., 25., 39.,  53.,
      0.,  0.,  0.,   0.,   0., 0., 0., 0., 0.,  0.,  0.,   0.,
      17., 39., 61.,  83.,  0., 0., 0., 0., 23., 53., 83.,  113.,
      0.,  0.,  0.,   0.,   0., 0., 0., 0., 0.,  0.,  0.,   0.,
      29., 67., 105., 143., 0., 0., 0., 0., 35., 81., 127., 173.,
      0.,  0.,  0.,   0.,   0., 0., 0., 0., 0.,  0.,  0.,   0.};
  const std::array<int, 4> in_shape = {{1, 6, 3, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x6x3x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,  11., 17.,  23.,  0., 0., 0., 0., 11., 25., 39.,  53.,
      0.,  0.,  0.,   0.,   0., 0., 0., 0., 0.,  0.,  0.,   0.,
      17., 39., 61.,  83.,  0., 0., 0., 0., 23., 53., 83.,  113.,
      0.,  0.,  0.,   0.,   0., 0., 0., 0., 0.,  0.,  0.,   0.,
      29., 67., 105., 143., 0., 0., 0., 0., 35., 81., 127., 173.,
      0.,  0.,  0.,   0.,   0., 0., 0., 0., 0.,  0.,  0.,   0.};
  const std::array<int, 4> in_shape = {{1, 6, 3, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x6x3x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,  70.,  110., 150.,  0., 0., 0., 0., 70.,  174., 278., 382.,
      0.,   0.,   0.,   0.,    0., 0., 0., 0., 0.,   0.,   0.,   0.,
      110., 278., 446., 614.,  0., 0., 0., 0., 150., 382., 614., 846.,
      0.,   0.,   0.,   0.,    0., 0., 0., 0., 0.,   0.,   0.,   0.,
      190., 486., 782., 1078., 0., 0., 0., 0., 230., 590., 950., 1310.,
      0.,   0.,   0.,   0.,    0., 0., 0., 0., 0.,   0.,   0.,   0.};
  const std::array<int, 4> in_shape = {{1, 6, 3, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x6x3x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,  70.,  110., 150.,  0., 0., 0., 0., 70.,  174., 278., 382.,
      0.,   0.,   0.,   0.,    0., 0., 0., 0., 0.,   0.,   0.,   0.,
      110., 278., 446., 614.,  0., 0., 0., 0., 150., 382., 614., 846.,
      0.,   0.,   0.,   0.,    0., 0., 0., 0., 0.,   0.,   0.,   0.,
      190., 486., 782., 1078., 0., 0., 0., 0., 230., 590., 950., 1310.,
      0.,   0.,   0.,   0.,    0., 0., 0., 0., 0.,   0.,   0.,   0.};
  const std::array<int, 4> in_shape = {{1, 6, 3, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x6x4x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {1., 0., 2., 0., 0., 0., 0., 0.,
                                         3., 0., 4., 0., 0., 0., 0., 0.,
                                         5., 0., 6., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 6, 4, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x6x4x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {1., 0., 2., 0., 0., 0., 0., 0.,
                                         3., 0., 4., 0., 0., 0., 0., 0.,
                                         5., 0., 6., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 6, 4, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x6x4x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {5.,  0., 11., 0., 0., 0., 0., 0.,
                                         17., 0., 23., 0., 0., 0., 0., 0.,
                                         29., 0., 35., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 6, 4, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x6x4x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {5.,  0., 11., 0., 0., 0., 0., 0.,
                                         17., 0., 23., 0., 0., 0., 0., 0.,
                                         29., 0., 35., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 6, 4, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x6x4x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {30.,  0., 70.,  0., 0., 0., 0., 0.,
                                         110., 0., 150., 0., 0., 0., 0., 0.,
                                         190., 0., 230., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 6, 4, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x6x4x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {30.,  0., 70.,  0., 0., 0., 0., 0.,
                                         110., 0., 150., 0., 0., 0., 0., 0.,
                                         190., 0., 230., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 6, 4, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x6x4x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1., 2.,  0., 0., 2., 4.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      3., 6.,  0., 0., 4., 8.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      5., 10., 0., 0., 6., 12., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 6, 4, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x6x4x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1., 2.,  0., 0., 2., 4.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      3., 6.,  0., 0., 4., 8.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      5., 10., 0., 0., 6., 12., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 6, 4, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x6x4x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,  11., 0., 0., 11., 25., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      17., 39., 0., 0., 23., 53., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      29., 67., 0., 0., 35., 81., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 6, 4, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x6x4x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,  11., 0., 0., 11., 25., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      17., 39., 0., 0., 23., 53., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      29., 67., 0., 0., 35., 81., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 6, 4, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x6x4x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,  70.,  0., 0., 70.,  174., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      110., 278., 0., 0., 150., 382., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      190., 486., 0., 0., 230., 590., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 6, 4, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x6x4x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,  70.,  0., 0., 70.,  174., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      110., 278., 0., 0., 150., 382., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      190., 486., 0., 0., 230., 590., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 6, 4, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x6x4x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1., 2.,  3.,  4.,  0., 0., 0., 0., 2., 4.,  6.,  8.,  0., 0., 0., 0.,
      0., 0.,  0.,  0.,  0., 0., 0., 0., 0., 0.,  0.,  0.,  0., 0., 0., 0.,
      3., 6.,  9.,  12., 0., 0., 0., 0., 4., 8.,  12., 16., 0., 0., 0., 0.,
      0., 0.,  0.,  0.,  0., 0., 0., 0., 0., 0.,  0.,  0.,  0., 0., 0., 0.,
      5., 10., 15., 20., 0., 0., 0., 0., 6., 12., 18., 24., 0., 0., 0., 0.,
      0., 0.,  0.,  0.,  0., 0., 0., 0., 0., 0.,  0.,  0.,  0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 6, 4, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x6x4x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1., 2.,  3.,  4.,  0., 0., 0., 0., 2., 4.,  6.,  8.,  0., 0., 0., 0.,
      0., 0.,  0.,  0.,  0., 0., 0., 0., 0., 0.,  0.,  0.,  0., 0., 0., 0.,
      3., 6.,  9.,  12., 0., 0., 0., 0., 4., 8.,  12., 16., 0., 0., 0., 0.,
      0., 0.,  0.,  0.,  0., 0., 0., 0., 0., 0.,  0.,  0.,  0., 0., 0., 0.,
      5., 10., 15., 20., 0., 0., 0., 0., 6., 12., 18., 24., 0., 0., 0., 0.,
      0., 0.,  0.,  0.,  0., 0., 0., 0., 0., 0.,  0.,  0.,  0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 6, 4, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x6x4x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,  11.,  17., 23., 0.,   0.,   0.,  0.,  11., 25., 39.,  53.,  0.,  0.,
      0.,  0.,   0.,  0.,  0.,   0.,   0.,  0.,  0.,  0.,  0.,   0.,   0.,  0.,
      0.,  0.,   0.,  0.,  17.,  39.,  61., 83., 0.,  0.,  0.,   0.,   23., 53.,
      83., 113., 0.,  0.,  0.,   0.,   0.,  0.,  0.,  0.,  0.,   0.,   0.,  0.,
      0.,  0.,   0.,  0.,  0.,   0.,   0.,  0.,  29., 67., 105., 143., 0.,  0.,
      0.,  0.,   35., 81., 127., 173., 0.,  0.,  0.,  0.,  0.,   0.,   0.,  0.,
      0.,  0.,   0.,  0.,  0.,   0.,   0.,  0.,  0.,  0.,  0.,   0.};
  const std::array<int, 4> in_shape = {{1, 6, 4, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x6x4x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,  11.,  17., 23., 0.,   0.,   0.,  0.,  11., 25., 39.,  53.,  0.,  0.,
      0.,  0.,   0.,  0.,  0.,   0.,   0.,  0.,  0.,  0.,  0.,   0.,   0.,  0.,
      0.,  0.,   0.,  0.,  17.,  39.,  61., 83., 0.,  0.,  0.,   0.,   23., 53.,
      83., 113., 0.,  0.,  0.,   0.,   0.,  0.,  0.,  0.,  0.,   0.,   0.,  0.,
      0.,  0.,   0.,  0.,  0.,   0.,   0.,  0.,  29., 67., 105., 143., 0.,  0.,
      0.,  0.,   35., 81., 127., 173., 0.,  0.,  0.,  0.,  0.,   0.,   0.,  0.,
      0.,  0.,   0.,  0.,  0.,   0.,   0.,  0.,  0.,  0.,  0.,   0.};
  const std::array<int, 4> in_shape = {{1, 6, 4, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x6x4x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,  70.,  110., 150.,  0.,   0.,   0.,   0.,    70.,  174., 278., 382.,
      0.,   0.,   0.,   0.,    0.,   0.,   0.,   0.,    0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,    0.,   0.,   0.,   0.,    110., 278., 446., 614.,
      0.,   0.,   0.,   0.,    150., 382., 614., 846.,  0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,    0.,   0.,   0.,   0.,    0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,    190., 486., 782., 1078., 0.,   0.,   0.,   0.,
      230., 590., 950., 1310., 0.,   0.,   0.,   0.,    0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,    0.,   0.,   0.,   0.,    0.,   0.,   0.,   0.};
  const std::array<int, 4> in_shape = {{1, 6, 4, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x6x4x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,  70.,  110., 150.,  0.,   0.,   0.,   0.,    70.,  174., 278., 382.,
      0.,   0.,   0.,   0.,    0.,   0.,   0.,   0.,    0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,    0.,   0.,   0.,   0.,    110., 278., 446., 614.,
      0.,   0.,   0.,   0.,    150., 382., 614., 846.,  0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,    0.,   0.,   0.,   0.,    0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,    190., 486., 782., 1078., 0.,   0.,   0.,   0.,
      230., 590., 950., 1310., 0.,   0.,   0.,   0.,    0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,    0.,   0.,   0.,   0.,    0.,   0.,   0.,   0.};
  const std::array<int, 4> in_shape = {{1, 6, 4, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x6x6x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1., 0., 2., 0., 3., 0., 0., 0., 0., 0., 0., 0., 4., 0., 5., 0., 6., 0.,
      0., 0., 0., 0., 0., 0., 7., 0., 8., 0., 9., 0., 0., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 6, 6, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x6x6x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1., 0., 2., 0., 3., 0., 0., 0., 0., 0., 0., 0., 4., 0., 5., 0., 6., 0.,
      0., 0., 0., 0., 0., 0., 7., 0., 8., 0., 9., 0., 0., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 6, 6, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x6x6x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,  0., 11., 0., 17., 0., 0., 0., 0., 0., 0., 0.,
      23., 0., 29., 0., 35., 0., 0., 0., 0., 0., 0., 0.,
      41., 0., 47., 0., 53., 0., 0., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 6, 6, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x6x6x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,  0., 11., 0., 17., 0., 0., 0., 0., 0., 0., 0.,
      23., 0., 29., 0., 35., 0., 0., 0., 0., 0., 0., 0.,
      41., 0., 47., 0., 53., 0., 0., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 6, 6, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x6x6x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,  0., 70.,  0., 110., 0., 0., 0., 0., 0., 0., 0.,
      150., 0., 190., 0., 230., 0., 0., 0., 0., 0., 0., 0.,
      270., 0., 310., 0., 350., 0., 0., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 6, 6, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x6x6x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,  0., 70.,  0., 110., 0., 0., 0., 0., 0., 0., 0.,
      150., 0., 190., 0., 230., 0., 0., 0., 0., 0., 0., 0.,
      270., 0., 310., 0., 350., 0., 0., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 6, 6, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x6x6x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1., 2., 0., 0.,  2.,  4., 0., 0., 3.,  6., 0., 0., 0.,  0., 0.,
      0., 0., 0., 0.,  0.,  0., 0., 0., 0.,  4., 8., 0., 0.,  5., 10.,
      0., 0., 6., 12., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0.,
      0., 0., 0., 7.,  14., 0., 0., 8., 16., 0., 0., 9., 18., 0., 0.,
      0., 0., 0., 0.,  0.,  0., 0., 0., 0.,  0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 6, 6, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x6x6x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1., 2., 0., 0.,  2.,  4., 0., 0., 3.,  6., 0., 0., 0.,  0., 0.,
      0., 0., 0., 0.,  0.,  0., 0., 0., 0.,  4., 8., 0., 0.,  5., 10.,
      0., 0., 6., 12., 0.,  0., 0., 0., 0.,  0., 0., 0., 0.,  0., 0.,
      0., 0., 0., 7.,  14., 0., 0., 8., 16., 0., 0., 9., 18., 0., 0.,
      0., 0., 0., 0.,  0.,  0., 0., 0., 0.,  0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 6, 6, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x6x6x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5., 11., 0.,  0.,  11., 25., 0., 0.,  17.,  39., 0.,  0.,  0.,   0.,  0.,
      0., 0.,  0.,  0.,  0.,  0.,  0., 0.,  0.,   23., 53., 0.,  0.,   29., 67.,
      0., 0.,  35., 81., 0.,  0.,  0., 0.,  0.,   0.,  0.,  0.,  0.,   0.,  0.,
      0., 0.,  0.,  41., 95., 0.,  0., 47., 109., 0.,  0.,  53., 123., 0.,  0.,
      0., 0.,  0.,  0.,  0.,  0.,  0., 0.,  0.,   0.,  0.,  0.};
  const std::array<int, 4> in_shape = {{1, 6, 6, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x6x6x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5., 11., 0.,  0.,  11., 25., 0., 0.,  17.,  39., 0.,  0.,  0.,   0.,  0.,
      0., 0.,  0.,  0.,  0.,  0.,  0., 0.,  0.,   23., 53., 0.,  0.,   29., 67.,
      0., 0.,  35., 81., 0.,  0.,  0., 0.,  0.,   0.,  0.,  0.,  0.,   0.,  0.,
      0., 0.,  0.,  41., 95., 0.,  0., 47., 109., 0.,  0.,  53., 123., 0.,  0.,
      0., 0.,  0.,  0.,  0.,  0.,  0., 0.,  0.,   0.,  0.,  0.};
  const std::array<int, 4> in_shape = {{1, 6, 6, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x6x6x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,  70.,  0., 0., 70.,  174., 0., 0., 110., 278., 0., 0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0., 0.,
      150., 382., 0., 0., 190., 486., 0., 0., 230., 590., 0., 0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0., 0.,
      270., 694., 0., 0., 310., 798., 0., 0., 350., 902., 0., 0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0., 0.};
  const std::array<int, 4> in_shape = {{1, 6, 6, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x6x6x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,  70.,  0., 0., 70.,  174., 0., 0., 110., 278., 0., 0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0., 0.,
      150., 382., 0., 0., 190., 486., 0., 0., 230., 590., 0., 0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0., 0.,
      270., 694., 0., 0., 310., 798., 0., 0., 350., 902., 0., 0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0., 0.};
  const std::array<int, 4> in_shape = {{1, 6, 6, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x6x6x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1., 2.,  3.,  4.,  0., 0., 0., 0., 2., 4.,  6.,  8.,  0., 0., 0., 0.,
      3., 6.,  9.,  12., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0.,  0.,  0.,  0., 0., 0., 0., 0., 0.,  0.,  0.,  0., 0., 0., 0.,
      4., 8.,  12., 16., 0., 0., 0., 0., 5., 10., 15., 20., 0., 0., 0., 0.,
      6., 12., 18., 24., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0.,  0.,  0.,  0., 0., 0., 0., 0., 0.,  0.,  0.,  0., 0., 0., 0.,
      7., 14., 21., 28., 0., 0., 0., 0., 8., 16., 24., 32., 0., 0., 0., 0.,
      9., 18., 27., 36., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0.,  0.,  0.,  0., 0., 0., 0., 0., 0.,  0.,  0.,  0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 6, 6, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x6x6x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1., 2.,  3.,  4.,  0., 0., 0., 0., 2., 4.,  6.,  8.,  0., 0., 0., 0.,
      3., 6.,  9.,  12., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0.,  0.,  0.,  0., 0., 0., 0., 0., 0.,  0.,  0.,  0., 0., 0., 0.,
      4., 8.,  12., 16., 0., 0., 0., 0., 5., 10., 15., 20., 0., 0., 0., 0.,
      6., 12., 18., 24., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0.,  0.,  0.,  0., 0., 0., 0., 0., 0.,  0.,  0.,  0., 0., 0., 0.,
      7., 14., 21., 28., 0., 0., 0., 0., 8., 16., 24., 32., 0., 0., 0., 0.,
      9., 18., 27., 36., 0., 0., 0., 0., 0., 0.,  0.,  0.,  0., 0., 0., 0.,
      0., 0.,  0.,  0.,  0., 0., 0., 0., 0., 0.,  0.,  0.,  0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 6, 6, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x6x6x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,  11., 17.,  23.,  0.,  0.,   0.,   0.,   11., 25.,  39.,  53.,
      0.,  0.,  0.,   0.,   17., 39.,  61.,  83.,  0.,  0.,   0.,   0.,
      0.,  0.,  0.,   0.,   0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,
      0.,  0.,  0.,   0.,   0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,
      23., 53., 83.,  113., 0.,  0.,   0.,   0.,   29., 67.,  105., 143.,
      0.,  0.,  0.,   0.,   35., 81.,  127., 173., 0.,  0.,   0.,   0.,
      0.,  0.,  0.,   0.,   0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,
      0.,  0.,  0.,   0.,   0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,
      41., 95., 149., 203., 0.,  0.,   0.,   0.,   47., 109., 171., 233.,
      0.,  0.,  0.,   0.,   53., 123., 193., 263., 0.,  0.,   0.,   0.,
      0.,  0.,  0.,   0.,   0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,
      0.,  0.,  0.,   0.,   0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.};
  const std::array<int, 4> in_shape = {{1, 6, 6, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x6x6x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,  11., 17.,  23.,  0.,  0.,   0.,   0.,   11., 25.,  39.,  53.,
      0.,  0.,  0.,   0.,   17., 39.,  61.,  83.,  0.,  0.,   0.,   0.,
      0.,  0.,  0.,   0.,   0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,
      0.,  0.,  0.,   0.,   0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,
      23., 53., 83.,  113., 0.,  0.,   0.,   0.,   29., 67.,  105., 143.,
      0.,  0.,  0.,   0.,   35., 81.,  127., 173., 0.,  0.,   0.,   0.,
      0.,  0.,  0.,   0.,   0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,
      0.,  0.,  0.,   0.,   0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,
      41., 95., 149., 203., 0.,  0.,   0.,   0.,   47., 109., 171., 233.,
      0.,  0.,  0.,   0.,   53., 123., 193., 263., 0.,  0.,   0.,   0.,
      0.,  0.,  0.,   0.,   0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,
      0.,  0.,  0.,   0.,   0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.};
  const std::array<int, 4> in_shape = {{1, 6, 6, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME1x6x6x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,   70.,   110., 150., 0.,    0.,    0.,   0.,    70.,   174., 278.,
      382.,  0.,    0.,   0.,   0.,    110.,  278., 446.,  614.,  0.,   0.,
      0.,    0.,    0.,   0.,   0.,    0.,    0.,   0.,    0.,    0.,   0.,
      0.,    0.,    0.,   0.,   0.,    0.,    0.,   0.,    0.,    0.,   0.,
      0.,    0.,    0.,   0.,   150.,  382.,  614., 846.,  0.,    0.,   0.,
      0.,    190.,  486., 782., 1078., 0.,    0.,   0.,    0.,    230., 590.,
      950.,  1310., 0.,   0.,   0.,    0.,    0.,   0.,    0.,    0.,   0.,
      0.,    0.,    0.,   0.,   0.,    0.,    0.,   0.,    0.,    0.,   0.,
      0.,    0.,    0.,   0.,   0.,    0.,    0.,   0.,    270.,  694., 1118.,
      1542., 0.,    0.,   0.,   0.,    310.,  798., 1286., 1774., 0.,   0.,
      0.,    0.,    350., 902., 1454., 2006., 0.,   0.,    0.,    0.,   0.,
      0.,    0.,    0.,   0.,   0.,    0.,    0.,   0.,    0.,    0.,   0.,
      0.,    0.,    0.,   0.,   0.,    0.,    0.,   0.,    0.,    0.,   0.,
      0.};
  const std::array<int, 4> in_shape = {{1, 6, 6, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID1x6x6x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,   70.,   110., 150., 0.,    0.,    0.,   0.,    70.,   174., 278.,
      382.,  0.,    0.,   0.,   0.,    110.,  278., 446.,  614.,  0.,   0.,
      0.,    0.,    0.,   0.,   0.,    0.,    0.,   0.,    0.,    0.,   0.,
      0.,    0.,    0.,   0.,   0.,    0.,    0.,   0.,    0.,    0.,   0.,
      0.,    0.,    0.,   0.,   150.,  382.,  614., 846.,  0.,    0.,   0.,
      0.,    190.,  486., 782., 1078., 0.,    0.,   0.,    0.,    230., 590.,
      950.,  1310., 0.,   0.,   0.,    0.,    0.,   0.,    0.,    0.,   0.,
      0.,    0.,    0.,   0.,   0.,    0.,    0.,   0.,    0.,    0.,   0.,
      0.,    0.,    0.,   0.,   0.,    0.,    0.,   0.,    270.,  694., 1118.,
      1542., 0.,    0.,   0.,   0.,    310.,  798., 1286., 1774., 0.,   0.,
      0.,    0.,    350., 902., 1454., 2006., 0.,   0.,    0.,    0.,   0.,
      0.,    0.,    0.,   0.,   0.,    0.,    0.,   0.,    0.,    0.,   0.,
      0.,    0.,    0.,   0.,   0.,    0.,    0.,   0.,    0.,    0.,   0.,
      0.};
  const std::array<int, 4> in_shape = {{1, 6, 6, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x3x3x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {1., 0., 2.,  0., 0., 0., 3.,  0., 4.,
                                         5., 0., 6.,  0., 0., 0., 7.,  0., 8.,
                                         9., 0., 10., 0., 0., 0., 11., 0., 12.};
  const std::array<int, 4> in_shape = {{3, 3, 3, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x3x3x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {1., 0., 2.,  0., 0., 0., 3.,  0., 4.,
                                         5., 0., 6.,  0., 0., 0., 7.,  0., 8.,
                                         9., 0., 10., 0., 0., 0., 11., 0., 12.};
  const std::array<int, 4> in_shape = {{3, 3, 3, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x3x3x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5., 0.,  11., 0.,  0.,  0., 17., 0., 23., 29., 0.,  35., 0., 0.,
      0., 41., 0.,  47., 53., 0., 59., 0., 0.,  0.,  65., 0.,  71.};
  const std::array<int, 4> in_shape = {{3, 3, 3, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x3x3x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5., 0.,  11., 0.,  0.,  0., 17., 0., 23., 29., 0.,  35., 0., 0.,
      0., 41., 0.,  47., 53., 0., 59., 0., 0.,  0.,  65., 0.,  71.};
  const std::array<int, 4> in_shape = {{3, 3, 3, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x3x3x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30., 0.,   70., 0.,   0.,   0., 110., 0., 150., 190., 0.,   230., 0.,  0.,
      0.,  270., 0.,  310., 350., 0., 390., 0., 0.,   0.,   430., 0.,   470.};
  const std::array<int, 4> in_shape = {{3, 3, 3, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x3x3x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30., 0.,   70., 0.,   0.,   0., 110., 0., 150., 190., 0.,   230., 0.,  0.,
      0.,  270., 0.,  310., 350., 0., 390., 0., 0.,   0.,   430., 0.,   470.};
  const std::array<int, 4> in_shape = {{3, 3, 3, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x3x3x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1., 2., 0., 0.,  2., 4.,  0.,  0.,  0., 0.,  0.,  0., 3.,  6.,
      0., 0., 4., 8.,  5., 10., 0.,  0.,  6., 12., 0.,  0., 0.,  0.,
      0., 0., 7., 14., 0., 0.,  8.,  16., 9., 18., 0.,  0., 10., 20.,
      0., 0., 0., 0.,  0., 0.,  11., 22., 0., 0.,  12., 24.};
  const std::array<int, 4> in_shape = {{3, 3, 3, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x3x3x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1., 2., 0., 0.,  2., 4.,  0.,  0.,  0., 0.,  0.,  0., 3.,  6.,
      0., 0., 4., 8.,  5., 10., 0.,  0.,  6., 12., 0.,  0., 0.,  0.,
      0., 0., 7., 14., 0., 0.,  8.,  16., 9., 18., 0.,  0., 10., 20.,
      0., 0., 0., 0.,  0., 0.,  11., 22., 0., 0.,  12., 24.};
  const std::array<int, 4> in_shape = {{3, 3, 3, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x3x3x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5., 11., 0.,  0.,  11., 25., 0.,  0.,   0.,  0.,   0.,  0.,  17., 39.,
      0., 0.,  23., 53., 29., 67., 0.,  0.,   35., 81.,  0.,  0.,  0.,  0.,
      0., 0.,  41., 95., 0.,  0.,  47., 109., 53., 123., 0.,  0.,  59., 137.,
      0., 0.,  0.,  0.,  0.,  0.,  65., 151., 0.,  0.,   71., 165.};
  const std::array<int, 4> in_shape = {{3, 3, 3, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x3x3x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5., 11., 0.,  0.,  11., 25., 0.,  0.,   0.,  0.,   0.,  0.,  17., 39.,
      0., 0.,  23., 53., 29., 67., 0.,  0.,   35., 81.,  0.,  0.,  0.,  0.,
      0., 0.,  41., 95., 0.,  0.,  47., 109., 53., 123., 0.,  0.,  59., 137.,
      0., 0.,  0.,  0.,  0.,  0.,  65., 151., 0.,  0.,   71., 165.};
  const std::array<int, 4> in_shape = {{3, 3, 3, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x3x3x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,  70.,  0.,   0.,   70.,  174.,  0.,   0.,   0.,    0.,   0.,
      0.,   110., 278., 0.,   0.,   150.,  382., 190., 486.,  0.,   0.,
      230., 590., 0.,   0.,   0.,   0.,    0.,   0.,   270.,  694., 0.,
      0.,   310., 798., 350., 902., 0.,    0.,   390., 1006., 0.,   0.,
      0.,   0.,   0.,   0.,   430., 1110., 0.,   0.,   470.,  1214.};
  const std::array<int, 4> in_shape = {{3, 3, 3, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x3x3x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,  70.,  0.,   0.,   70.,  174.,  0.,   0.,   0.,    0.,   0.,
      0.,   110., 278., 0.,   0.,   150.,  382., 190., 486.,  0.,   0.,
      230., 590., 0.,   0.,   0.,   0.,    0.,   0.,   270.,  694., 0.,
      0.,   310., 798., 350., 902., 0.,    0.,   390., 1006., 0.,   0.,
      0.,   0.,   0.,   0.,   430., 1110., 0.,   0.,   470.,  1214.};
  const std::array<int, 4> in_shape = {{3, 3, 3, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x3x3x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,  2.,  3., 4.,  0.,  0.,  0.,  0.,  2.,  4.,  6.,  8.,  0.,  0.,
      0.,  0.,  0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  3.,  6.,  9.,  12.,
      0.,  0.,  0., 0.,  4.,  8.,  12., 16., 5.,  10., 15., 20., 0.,  0.,
      0.,  0.,  6., 12., 18., 24., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0., 0.,  7.,  14., 21., 28., 0.,  0.,  0.,  0.,  8.,  16.,
      24., 32., 9., 18., 27., 36., 0.,  0.,  0.,  0.,  10., 20., 30., 40.,
      0.,  0.,  0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  11., 22.,
      33., 44., 0., 0.,  0.,  0.,  12., 24., 36., 48.};
  const std::array<int, 4> in_shape = {{3, 3, 3, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x3x3x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,  2.,  3., 4.,  0.,  0.,  0.,  0.,  2.,  4.,  6.,  8.,  0.,  0.,
      0.,  0.,  0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  3.,  6.,  9.,  12.,
      0.,  0.,  0., 0.,  4.,  8.,  12., 16., 5.,  10., 15., 20., 0.,  0.,
      0.,  0.,  6., 12., 18., 24., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
      0.,  0.,  0., 0.,  7.,  14., 21., 28., 0.,  0.,  0.,  0.,  8.,  16.,
      24., 32., 9., 18., 27., 36., 0.,  0.,  0.,  0.,  10., 20., 30., 40.,
      0.,  0.,  0., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  11., 22.,
      33., 44., 0., 0.,  0.,  0.,  12., 24., 36., 48.};
  const std::array<int, 4> in_shape = {{3, 3, 3, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x3x3x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,  11.,  17.,  23.,  0., 0., 0., 0., 11., 25.,  39.,  53.,
      0.,  0.,   0.,   0.,   0., 0., 0., 0., 0.,  0.,   0.,   0.,
      17., 39.,  61.,  83.,  0., 0., 0., 0., 23., 53.,  83.,  113.,
      29., 67.,  105., 143., 0., 0., 0., 0., 35., 81.,  127., 173.,
      0.,  0.,   0.,   0.,   0., 0., 0., 0., 0.,  0.,   0.,   0.,
      41., 95.,  149., 203., 0., 0., 0., 0., 47., 109., 171., 233.,
      53., 123., 193., 263., 0., 0., 0., 0., 59., 137., 215., 293.,
      0.,  0.,   0.,   0.,   0., 0., 0., 0., 0.,  0.,   0.,   0.,
      65., 151., 237., 323., 0., 0., 0., 0., 71., 165., 259., 353.};
  const std::array<int, 4> in_shape = {{3, 3, 3, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x3x3x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,  11.,  17.,  23.,  0., 0., 0., 0., 11., 25.,  39.,  53.,
      0.,  0.,   0.,   0.,   0., 0., 0., 0., 0.,  0.,   0.,   0.,
      17., 39.,  61.,  83.,  0., 0., 0., 0., 23., 53.,  83.,  113.,
      29., 67.,  105., 143., 0., 0., 0., 0., 35., 81.,  127., 173.,
      0.,  0.,   0.,   0.,   0., 0., 0., 0., 0.,  0.,   0.,   0.,
      41., 95.,  149., 203., 0., 0., 0., 0., 47., 109., 171., 233.,
      53., 123., 193., 263., 0., 0., 0., 0., 59., 137., 215., 293.,
      0.,  0.,   0.,   0.,   0., 0., 0., 0., 0.,  0.,   0.,   0.,
      65., 151., 237., 323., 0., 0., 0., 0., 71., 165., 259., 353.};
  const std::array<int, 4> in_shape = {{3, 3, 3, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x3x3x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,  70.,   110.,  150.,  0., 0., 0., 0., 70.,  174.,  278.,  382.,
      0.,   0.,    0.,    0.,    0., 0., 0., 0., 0.,   0.,    0.,    0.,
      110., 278.,  446.,  614.,  0., 0., 0., 0., 150., 382.,  614.,  846.,
      190., 486.,  782.,  1078., 0., 0., 0., 0., 230., 590.,  950.,  1310.,
      0.,   0.,    0.,    0.,    0., 0., 0., 0., 0.,   0.,    0.,    0.,
      270., 694.,  1118., 1542., 0., 0., 0., 0., 310., 798.,  1286., 1774.,
      350., 902.,  1454., 2006., 0., 0., 0., 0., 390., 1006., 1622., 2238.,
      0.,   0.,    0.,    0.,    0., 0., 0., 0., 0.,   0.,    0.,    0.,
      430., 1110., 1790., 2470., 0., 0., 0., 0., 470., 1214., 1958., 2702.};
  const std::array<int, 4> in_shape = {{3, 3, 3, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x3x3x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,  70.,   110.,  150.,  0., 0., 0., 0., 70.,  174.,  278.,  382.,
      0.,   0.,    0.,    0.,    0., 0., 0., 0., 0.,   0.,    0.,    0.,
      110., 278.,  446.,  614.,  0., 0., 0., 0., 150., 382.,  614.,  846.,
      190., 486.,  782.,  1078., 0., 0., 0., 0., 230., 590.,  950.,  1310.,
      0.,   0.,    0.,    0.,    0., 0., 0., 0., 0.,   0.,    0.,    0.,
      270., 694.,  1118., 1542., 0., 0., 0., 0., 310., 798.,  1286., 1774.,
      350., 902.,  1454., 2006., 0., 0., 0., 0., 390., 1006., 1622., 2238.,
      0.,   0.,    0.,    0.,    0., 0., 0., 0., 0.,   0.,    0.,    0.,
      430., 1110., 1790., 2470., 0., 0., 0., 0., 470., 1214., 1958., 2702.};
  const std::array<int, 4> in_shape = {{3, 3, 3, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x3x4x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {1., 0., 2., 0., 0., 0.,  0., 0.,  3.,
                                         0., 4., 0., 5., 0., 6.,  0., 0.,  0.,
                                         0., 0., 7., 0., 8., 0.,  9., 0.,  10.,
                                         0., 0., 0., 0., 0., 11., 0., 12., 0.};
  const std::array<int, 4> in_shape = {{3, 3, 4, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x3x4x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {1., 0., 2., 0., 0., 0.,  0., 0.,  3.,
                                         0., 4., 0., 5., 0., 6.,  0., 0.,  0.,
                                         0., 0., 7., 0., 8., 0.,  9., 0.,  10.,
                                         0., 0., 0., 0., 0., 11., 0., 12., 0.};
  const std::array<int, 4> in_shape = {{3, 3, 4, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x3x4x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,  0., 11., 0., 0., 0., 0., 0., 17., 0., 23., 0.,
      29., 0., 35., 0., 0., 0., 0., 0., 41., 0., 47., 0.,
      53., 0., 59., 0., 0., 0., 0., 0., 65., 0., 71., 0.};
  const std::array<int, 4> in_shape = {{3, 3, 4, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x3x4x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,  0., 11., 0., 0., 0., 0., 0., 17., 0., 23., 0.,
      29., 0., 35., 0., 0., 0., 0., 0., 41., 0., 47., 0.,
      53., 0., 59., 0., 0., 0., 0., 0., 65., 0., 71., 0.};
  const std::array<int, 4> in_shape = {{3, 3, 4, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x3x4x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,  0., 70.,  0., 0., 0., 0., 0., 110., 0., 150., 0.,
      190., 0., 230., 0., 0., 0., 0., 0., 270., 0., 310., 0.,
      350., 0., 390., 0., 0., 0., 0., 0., 430., 0., 470., 0.};
  const std::array<int, 4> in_shape = {{3, 3, 4, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x3x4x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,  0., 70.,  0., 0., 0., 0., 0., 110., 0., 150., 0.,
      190., 0., 230., 0., 0., 0., 0., 0., 270., 0., 310., 0.,
      350., 0., 390., 0., 0., 0., 0., 0., 430., 0., 470., 0.};
  const std::array<int, 4> in_shape = {{3, 3, 4, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x3x4x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,  2., 0., 0., 2.,  4.,  0., 0.,  0.,  0.,  0.,  0.,  0., 0., 0.,
      0.,  3., 6., 0., 0.,  4.,  8., 0.,  0.,  5.,  10., 0.,  0., 6., 12.,
      0.,  0., 0., 0., 0.,  0.,  0., 0.,  0.,  0.,  7.,  14., 0., 0., 8.,
      16., 0., 0., 9., 18., 0.,  0., 10., 20., 0.,  0.,  0.,  0., 0., 0.,
      0.,  0., 0., 0., 11., 22., 0., 0.,  12., 24., 0.,  0.};
  const std::array<int, 4> in_shape = {{3, 3, 4, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x3x4x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,  2., 0., 0., 2.,  4.,  0., 0.,  0.,  0.,  0.,  0.,  0., 0., 0.,
      0.,  3., 6., 0., 0.,  4.,  8., 0.,  0.,  5.,  10., 0.,  0., 6., 12.,
      0.,  0., 0., 0., 0.,  0.,  0., 0.,  0.,  0.,  7.,  14., 0., 0., 8.,
      16., 0., 0., 9., 18., 0.,  0., 10., 20., 0.,  0.,  0.,  0., 0., 0.,
      0.,  0., 0., 0., 11., 22., 0., 0.,  12., 24., 0.,  0.};
  const std::array<int, 4> in_shape = {{3, 3, 4, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x3x4x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,  11.,  0., 0., 11., 25.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,   0., 0.,
      17., 39.,  0., 0., 23., 53.,  0., 0., 29., 67., 0., 0., 35., 81.,  0., 0.,
      0.,  0.,   0., 0., 0.,  0.,   0., 0., 41., 95., 0., 0., 47., 109., 0., 0.,
      53., 123., 0., 0., 59., 137., 0., 0., 0.,  0.,  0., 0., 0.,  0.,   0., 0.,
      65., 151., 0., 0., 71., 165., 0., 0.};
  const std::array<int, 4> in_shape = {{3, 3, 4, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x3x4x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,  11.,  0., 0., 11., 25.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,   0., 0.,
      17., 39.,  0., 0., 23., 53.,  0., 0., 29., 67., 0., 0., 35., 81.,  0., 0.,
      0.,  0.,   0., 0., 0.,  0.,   0., 0., 41., 95., 0., 0., 47., 109., 0., 0.,
      53., 123., 0., 0., 59., 137., 0., 0., 0.,  0.,  0., 0., 0.,  0.,   0., 0.,
      65., 151., 0., 0., 71., 165., 0., 0.};
  const std::array<int, 4> in_shape = {{3, 3, 4, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x3x4x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,  70.,  0., 0., 70.,  174.,  0., 0., 0.,   0.,    0., 0.,
      0.,   0.,   0., 0., 110., 278.,  0., 0., 150., 382.,  0., 0.,
      190., 486., 0., 0., 230., 590.,  0., 0., 0.,   0.,    0., 0.,
      0.,   0.,   0., 0., 270., 694.,  0., 0., 310., 798.,  0., 0.,
      350., 902., 0., 0., 390., 1006., 0., 0., 0.,   0.,    0., 0.,
      0.,   0.,   0., 0., 430., 1110., 0., 0., 470., 1214., 0., 0.};
  const std::array<int, 4> in_shape = {{3, 3, 4, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x3x4x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,  70.,  0., 0., 70.,  174.,  0., 0., 0.,   0.,    0., 0.,
      0.,   0.,   0., 0., 110., 278.,  0., 0., 150., 382.,  0., 0.,
      190., 486., 0., 0., 230., 590.,  0., 0., 0.,   0.,    0., 0.,
      0.,   0.,   0., 0., 270., 694.,  0., 0., 310., 798.,  0., 0.,
      350., 902., 0., 0., 390., 1006., 0., 0., 0.,   0.,    0., 0.,
      0.,   0.,   0., 0., 430., 1110., 0., 0., 470., 1214., 0., 0.};
  const std::array<int, 4> in_shape = {{3, 3, 4, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x3x4x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,  2.,  3.,  4.,  0., 0., 0., 0., 2.,  4.,  6.,  8.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      3.,  6.,  9.,  12., 0., 0., 0., 0., 4.,  8.,  12., 16., 0., 0., 0., 0.,
      5.,  10., 15., 20., 0., 0., 0., 0., 6.,  12., 18., 24., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      7.,  14., 21., 28., 0., 0., 0., 0., 8.,  16., 24., 32., 0., 0., 0., 0.,
      9.,  18., 27., 36., 0., 0., 0., 0., 10., 20., 30., 40., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      11., 22., 33., 44., 0., 0., 0., 0., 12., 24., 36., 48., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{3, 3, 4, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x3x4x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,  2.,  3.,  4.,  0., 0., 0., 0., 2.,  4.,  6.,  8.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      3.,  6.,  9.,  12., 0., 0., 0., 0., 4.,  8.,  12., 16., 0., 0., 0., 0.,
      5.,  10., 15., 20., 0., 0., 0., 0., 6.,  12., 18., 24., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      7.,  14., 21., 28., 0., 0., 0., 0., 8.,  16., 24., 32., 0., 0., 0., 0.,
      9.,  18., 27., 36., 0., 0., 0., 0., 10., 20., 30., 40., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      11., 22., 33., 44., 0., 0., 0., 0., 12., 24., 36., 48., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{3, 3, 4, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x3x4x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,  11.,  17.,  23.,  0.,  0.,   0.,   0.,   11., 25.,  39.,  53.,
      0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,   17., 39.,  61.,  83.,
      0.,  0.,   0.,   0.,   23., 53.,  83.,  113., 0.,  0.,   0.,   0.,
      29., 67.,  105., 143., 0.,  0.,   0.,   0.,   35., 81.,  127., 173.,
      0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,   41., 95.,  149., 203.,
      0.,  0.,   0.,   0.,   47., 109., 171., 233., 0.,  0.,   0.,   0.,
      53., 123., 193., 263., 0.,  0.,   0.,   0.,   59., 137., 215., 293.,
      0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,   65., 151., 237., 323.,
      0.,  0.,   0.,   0.,   71., 165., 259., 353., 0.,  0.,   0.,   0.};
  const std::array<int, 4> in_shape = {{3, 3, 4, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x3x4x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,  11.,  17.,  23.,  0.,  0.,   0.,   0.,   11., 25.,  39.,  53.,
      0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,   17., 39.,  61.,  83.,
      0.,  0.,   0.,   0.,   23., 53.,  83.,  113., 0.,  0.,   0.,   0.,
      29., 67.,  105., 143., 0.,  0.,   0.,   0.,   35., 81.,  127., 173.,
      0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,   41., 95.,  149., 203.,
      0.,  0.,   0.,   0.,   47., 109., 171., 233., 0.,  0.,   0.,   0.,
      53., 123., 193., 263., 0.,  0.,   0.,   0.,   59., 137., 215., 293.,
      0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,   65., 151., 237., 323.,
      0.,  0.,   0.,   0.,   71., 165., 259., 353., 0.,  0.,   0.,   0.};
  const std::array<int, 4> in_shape = {{3, 3, 4, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x3x4x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,   70.,   110.,  150.,  0.,   0.,    0.,    0.,    70.,   174.,
      278.,  382.,  0.,    0.,    0.,   0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,   0.,    0.,    0.,    0.,    0.,
      0.,    0.,    110.,  278.,  446., 614.,  0.,    0.,    0.,    0.,
      150.,  382.,  614.,  846.,  0.,   0.,    0.,    0.,    190.,  486.,
      782.,  1078., 0.,    0.,    0.,   0.,    230.,  590.,  950.,  1310.,
      0.,    0.,    0.,    0.,    0.,   0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,   0.,    0.,    0.,    0.,    0.,
      270.,  694.,  1118., 1542., 0.,   0.,    0.,    0.,    310.,  798.,
      1286., 1774., 0.,    0.,    0.,   0.,    350.,  902.,  1454., 2006.,
      0.,    0.,    0.,    0.,    390., 1006., 1622., 2238., 0.,    0.,
      0.,    0.,    0.,    0.,    0.,   0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,   0.,    0.,    0.,    430.,  1110.,
      1790., 2470., 0.,    0.,    0.,   0.,    470.,  1214., 1958., 2702.,
      0.,    0.,    0.,    0.};
  const std::array<int, 4> in_shape = {{3, 3, 4, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x3x4x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,   70.,   110.,  150.,  0.,   0.,    0.,    0.,    70.,   174.,
      278.,  382.,  0.,    0.,    0.,   0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,   0.,    0.,    0.,    0.,    0.,
      0.,    0.,    110.,  278.,  446., 614.,  0.,    0.,    0.,    0.,
      150.,  382.,  614.,  846.,  0.,   0.,    0.,    0.,    190.,  486.,
      782.,  1078., 0.,    0.,    0.,   0.,    230.,  590.,  950.,  1310.,
      0.,    0.,    0.,    0.,    0.,   0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,   0.,    0.,    0.,    0.,    0.,
      270.,  694.,  1118., 1542., 0.,   0.,    0.,    0.,    310.,  798.,
      1286., 1774., 0.,    0.,    0.,   0.,    350.,  902.,  1454., 2006.,
      0.,    0.,    0.,    0.,    390., 1006., 1622., 2238., 0.,    0.,
      0.,    0.,    0.,    0.,    0.,   0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,   0.,    0.,    0.,    430.,  1110.,
      1790., 2470., 0.,    0.,    0.,   0.,    470.,  1214., 1958., 2702.,
      0.,    0.,    0.,    0.};
  const std::array<int, 4> in_shape = {{3, 3, 4, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x3x6x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1., 0., 2.,  0., 3.,  0., 0.,  0., 0.,  0., 0.,  0., 4.,  0.,
      5., 0., 6.,  0., 7.,  0., 8.,  0., 9.,  0., 0.,  0., 0.,  0.,
      0., 0., 10., 0., 11., 0., 12., 0., 13., 0., 14., 0., 15., 0.,
      0., 0., 0.,  0., 0.,  0., 16., 0., 17., 0., 18., 0.};
  const std::array<int, 4> in_shape = {{3, 3, 6, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x3x6x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1., 0., 2.,  0., 3.,  0., 0.,  0., 0.,  0., 0.,  0., 4.,  0.,
      5., 0., 6.,  0., 7.,  0., 8.,  0., 9.,  0., 0.,  0., 0.,  0.,
      0., 0., 10., 0., 11., 0., 12., 0., 13., 0., 14., 0., 15., 0.,
      0., 0., 0.,  0., 0.,  0., 16., 0., 17., 0., 18., 0.};
  const std::array<int, 4> in_shape = {{3, 3, 6, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x3x6x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,  0., 11., 0., 17., 0., 0.,  0., 0.,   0., 0.,   0., 23., 0.,
      29., 0., 35., 0., 41., 0., 47., 0., 53.,  0., 0.,   0., 0.,  0.,
      0.,  0., 59., 0., 65., 0., 71., 0., 77.,  0., 83.,  0., 89., 0.,
      0.,  0., 0.,  0., 0.,  0., 95., 0., 101., 0., 107., 0.};
  const std::array<int, 4> in_shape = {{3, 3, 6, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x3x6x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,  0., 11., 0., 17., 0., 0.,  0., 0.,   0., 0.,   0., 23., 0.,
      29., 0., 35., 0., 41., 0., 47., 0., 53.,  0., 0.,   0., 0.,  0.,
      0.,  0., 59., 0., 65., 0., 71., 0., 77.,  0., 83.,  0., 89., 0.,
      0.,  0., 0.,  0., 0.,  0., 95., 0., 101., 0., 107., 0.};
  const std::array<int, 4> in_shape = {{3, 3, 6, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x3x6x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,  0., 70.,  0., 110., 0., 0.,   0., 0.,   0., 0.,   0., 150., 0.,
      190., 0., 230., 0., 270., 0., 310., 0., 350., 0., 0.,   0., 0.,   0.,
      0.,   0., 390., 0., 430., 0., 470., 0., 510., 0., 550., 0., 590., 0.,
      0.,   0., 0.,   0., 0.,   0., 630., 0., 670., 0., 710., 0.};
  const std::array<int, 4> in_shape = {{3, 3, 6, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x3x6x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,  0., 70.,  0., 110., 0., 0.,   0., 0.,   0., 0.,   0., 150., 0.,
      190., 0., 230., 0., 270., 0., 310., 0., 350., 0., 0.,   0., 0.,   0.,
      0.,   0., 390., 0., 430., 0., 470., 0., 510., 0., 550., 0., 590., 0.,
      0.,   0., 0.,   0., 0.,   0., 630., 0., 670., 0., 710., 0.};
  const std::array<int, 4> in_shape = {{3, 3, 6, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x3x6x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,  2.,  0., 0., 2.,  4.,  0., 0., 3.,  6.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 4.,  8.,  0., 0., 5.,  10., 0., 0.,
      6.,  12., 0., 0., 7.,  14., 0., 0., 8.,  16., 0., 0., 9.,  18., 0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 10., 20., 0., 0.,
      11., 22., 0., 0., 12., 24., 0., 0., 13., 26., 0., 0., 14., 28., 0., 0.,
      15., 30., 0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      16., 32., 0., 0., 17., 34., 0., 0., 18., 36., 0., 0.};
  const std::array<int, 4> in_shape = {{3, 3, 6, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x3x6x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,  2.,  0., 0., 2.,  4.,  0., 0., 3.,  6.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 4.,  8.,  0., 0., 5.,  10., 0., 0.,
      6.,  12., 0., 0., 7.,  14., 0., 0., 8.,  16., 0., 0., 9.,  18., 0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 10., 20., 0., 0.,
      11., 22., 0., 0., 12., 24., 0., 0., 13., 26., 0., 0., 14., 28., 0., 0.,
      15., 30., 0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      16., 32., 0., 0., 17., 34., 0., 0., 18., 36., 0., 0.};
  const std::array<int, 4> in_shape = {{3, 3, 6, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x3x6x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,  11.,  0., 0., 11.,  25.,  0., 0., 17.,  39.,  0., 0.,
      0.,  0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0., 0.,
      23., 53.,  0., 0., 29.,  67.,  0., 0., 35.,  81.,  0., 0.,
      41., 95.,  0., 0., 47.,  109., 0., 0., 53.,  123., 0., 0.,
      0.,  0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0., 0.,
      59., 137., 0., 0., 65.,  151., 0., 0., 71.,  165., 0., 0.,
      77., 179., 0., 0., 83.,  193., 0., 0., 89.,  207., 0., 0.,
      0.,  0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0., 0.,
      95., 221., 0., 0., 101., 235., 0., 0., 107., 249., 0., 0.};
  const std::array<int, 4> in_shape = {{3, 3, 6, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x3x6x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,  11.,  0., 0., 11.,  25.,  0., 0., 17.,  39.,  0., 0.,
      0.,  0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0., 0.,
      23., 53.,  0., 0., 29.,  67.,  0., 0., 35.,  81.,  0., 0.,
      41., 95.,  0., 0., 47.,  109., 0., 0., 53.,  123., 0., 0.,
      0.,  0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0., 0.,
      59., 137., 0., 0., 65.,  151., 0., 0., 71.,  165., 0., 0.,
      77., 179., 0., 0., 83.,  193., 0., 0., 89.,  207., 0., 0.,
      0.,  0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0., 0.,
      95., 221., 0., 0., 101., 235., 0., 0., 107., 249., 0., 0.};
  const std::array<int, 4> in_shape = {{3, 3, 6, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x3x6x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,  70.,   0., 0., 70.,  174.,  0., 0., 110., 278.,  0., 0.,
      0.,   0.,    0., 0., 0.,   0.,    0., 0., 0.,   0.,    0., 0.,
      150., 382.,  0., 0., 190., 486.,  0., 0., 230., 590.,  0., 0.,
      270., 694.,  0., 0., 310., 798.,  0., 0., 350., 902.,  0., 0.,
      0.,   0.,    0., 0., 0.,   0.,    0., 0., 0.,   0.,    0., 0.,
      390., 1006., 0., 0., 430., 1110., 0., 0., 470., 1214., 0., 0.,
      510., 1318., 0., 0., 550., 1422., 0., 0., 590., 1526., 0., 0.,
      0.,   0.,    0., 0., 0.,   0.,    0., 0., 0.,   0.,    0., 0.,
      630., 1630., 0., 0., 670., 1734., 0., 0., 710., 1838., 0., 0.};
  const std::array<int, 4> in_shape = {{3, 3, 6, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x3x6x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,  70.,   0., 0., 70.,  174.,  0., 0., 110., 278.,  0., 0.,
      0.,   0.,    0., 0., 0.,   0.,    0., 0., 0.,   0.,    0., 0.,
      150., 382.,  0., 0., 190., 486.,  0., 0., 230., 590.,  0., 0.,
      270., 694.,  0., 0., 310., 798.,  0., 0., 350., 902.,  0., 0.,
      0.,   0.,    0., 0., 0.,   0.,    0., 0., 0.,   0.,    0., 0.,
      390., 1006., 0., 0., 430., 1110., 0., 0., 470., 1214., 0., 0.,
      510., 1318., 0., 0., 550., 1422., 0., 0., 590., 1526., 0., 0.,
      0.,   0.,    0., 0., 0.,   0.,    0., 0., 0.,   0.,    0., 0.,
      630., 1630., 0., 0., 670., 1734., 0., 0., 710., 1838., 0., 0.};
  const std::array<int, 4> in_shape = {{3, 3, 6, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x3x6x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,  2.,  3.,  4.,  0., 0., 0., 0., 2.,  4.,  6.,  8.,  0., 0., 0., 0.,
      3.,  6.,  9.,  12., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      4.,  8.,  12., 16., 0., 0., 0., 0., 5.,  10., 15., 20., 0., 0., 0., 0.,
      6.,  12., 18., 24., 0., 0., 0., 0., 7.,  14., 21., 28., 0., 0., 0., 0.,
      8.,  16., 24., 32., 0., 0., 0., 0., 9.,  18., 27., 36., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 10., 20., 30., 40., 0., 0., 0., 0.,
      11., 22., 33., 44., 0., 0., 0., 0., 12., 24., 36., 48., 0., 0., 0., 0.,
      13., 26., 39., 52., 0., 0., 0., 0., 14., 28., 42., 56., 0., 0., 0., 0.,
      15., 30., 45., 60., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      16., 32., 48., 64., 0., 0., 0., 0., 17., 34., 51., 68., 0., 0., 0., 0.,
      18., 36., 54., 72., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{3, 3, 6, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x3x6x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,  2.,  3.,  4.,  0., 0., 0., 0., 2.,  4.,  6.,  8.,  0., 0., 0., 0.,
      3.,  6.,  9.,  12., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      4.,  8.,  12., 16., 0., 0., 0., 0., 5.,  10., 15., 20., 0., 0., 0., 0.,
      6.,  12., 18., 24., 0., 0., 0., 0., 7.,  14., 21., 28., 0., 0., 0., 0.,
      8.,  16., 24., 32., 0., 0., 0., 0., 9.,  18., 27., 36., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 10., 20., 30., 40., 0., 0., 0., 0.,
      11., 22., 33., 44., 0., 0., 0., 0., 12., 24., 36., 48., 0., 0., 0., 0.,
      13., 26., 39., 52., 0., 0., 0., 0., 14., 28., 42., 56., 0., 0., 0., 0.,
      15., 30., 45., 60., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      16., 32., 48., 64., 0., 0., 0., 0., 17., 34., 51., 68., 0., 0., 0., 0.,
      18., 36., 54., 72., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{3, 3, 6, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x3x6x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,  11.,  17.,  23.,  0.,   0.,   0.,   0.,   11.,  25.,  39.,  53.,
      0.,  0.,   0.,   0.,   17.,  39.,  61.,  83.,  0.,   0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      23., 53.,  83.,  113., 0.,   0.,   0.,   0.,   29.,  67.,  105., 143.,
      0.,  0.,   0.,   0.,   35.,  81.,  127., 173., 0.,   0.,   0.,   0.,
      41., 95.,  149., 203., 0.,   0.,   0.,   0.,   47.,  109., 171., 233.,
      0.,  0.,   0.,   0.,   53.,  123., 193., 263., 0.,   0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      59., 137., 215., 293., 0.,   0.,   0.,   0.,   65.,  151., 237., 323.,
      0.,  0.,   0.,   0.,   71.,  165., 259., 353., 0.,   0.,   0.,   0.,
      77., 179., 281., 383., 0.,   0.,   0.,   0.,   83.,  193., 303., 413.,
      0.,  0.,   0.,   0.,   89.,  207., 325., 443., 0.,   0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      95., 221., 347., 473., 0.,   0.,   0.,   0.,   101., 235., 369., 503.,
      0.,  0.,   0.,   0.,   107., 249., 391., 533., 0.,   0.,   0.,   0.};
  const std::array<int, 4> in_shape = {{3, 3, 6, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x3x6x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,  11.,  17.,  23.,  0.,   0.,   0.,   0.,   11.,  25.,  39.,  53.,
      0.,  0.,   0.,   0.,   17.,  39.,  61.,  83.,  0.,   0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      23., 53.,  83.,  113., 0.,   0.,   0.,   0.,   29.,  67.,  105., 143.,
      0.,  0.,   0.,   0.,   35.,  81.,  127., 173., 0.,   0.,   0.,   0.,
      41., 95.,  149., 203., 0.,   0.,   0.,   0.,   47.,  109., 171., 233.,
      0.,  0.,   0.,   0.,   53.,  123., 193., 263., 0.,   0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      59., 137., 215., 293., 0.,   0.,   0.,   0.,   65.,  151., 237., 323.,
      0.,  0.,   0.,   0.,   71.,  165., 259., 353., 0.,   0.,   0.,   0.,
      77., 179., 281., 383., 0.,   0.,   0.,   0.,   83.,  193., 303., 413.,
      0.,  0.,   0.,   0.,   89.,  207., 325., 443., 0.,   0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      95., 221., 347., 473., 0.,   0.,   0.,   0.,   101., 235., 369., 503.,
      0.,  0.,   0.,   0.,   107., 249., 391., 533., 0.,   0.,   0.,   0.};
  const std::array<int, 4> in_shape = {{3, 3, 6, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x3x6x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,   70.,   110.,  150.,  0.,    0.,    0.,    0.,    70.,   174.,
      278.,  382.,  0.,    0.,    0.,    0.,    110.,  278.,  446.,  614.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    150.,  382.,
      614.,  846.,  0.,    0.,    0.,    0.,    190.,  486.,  782.,  1078.,
      0.,    0.,    0.,    0.,    230.,  590.,  950.,  1310., 0.,    0.,
      0.,    0.,    270.,  694.,  1118., 1542., 0.,    0.,    0.,    0.,
      310.,  798.,  1286., 1774., 0.,    0.,    0.,    0.,    350.,  902.,
      1454., 2006., 0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      390.,  1006., 1622., 2238., 0.,    0.,    0.,    0.,    430.,  1110.,
      1790., 2470., 0.,    0.,    0.,    0.,    470.,  1214., 1958., 2702.,
      0.,    0.,    0.,    0.,    510.,  1318., 2126., 2934., 0.,    0.,
      0.,    0.,    550.,  1422., 2294., 3166., 0.,    0.,    0.,    0.,
      590.,  1526., 2462., 3398., 0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    630.,  1630., 2630., 3630., 0.,    0.,    0.,    0.,
      670.,  1734., 2798., 3862., 0.,    0.,    0.,    0.,    710.,  1838.,
      2966., 4094., 0.,    0.,    0.,    0.};
  const std::array<int, 4> in_shape = {{3, 3, 6, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x3x6x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,   70.,   110.,  150.,  0.,    0.,    0.,    0.,    70.,   174.,
      278.,  382.,  0.,    0.,    0.,    0.,    110.,  278.,  446.,  614.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    150.,  382.,
      614.,  846.,  0.,    0.,    0.,    0.,    190.,  486.,  782.,  1078.,
      0.,    0.,    0.,    0.,    230.,  590.,  950.,  1310., 0.,    0.,
      0.,    0.,    270.,  694.,  1118., 1542., 0.,    0.,    0.,    0.,
      310.,  798.,  1286., 1774., 0.,    0.,    0.,    0.,    350.,  902.,
      1454., 2006., 0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      390.,  1006., 1622., 2238., 0.,    0.,    0.,    0.,    430.,  1110.,
      1790., 2470., 0.,    0.,    0.,    0.,    470.,  1214., 1958., 2702.,
      0.,    0.,    0.,    0.,    510.,  1318., 2126., 2934., 0.,    0.,
      0.,    0.,    550.,  1422., 2294., 3166., 0.,    0.,    0.,    0.,
      590.,  1526., 2462., 3398., 0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    630.,  1630., 2630., 3630., 0.,    0.,    0.,    0.,
      670.,  1734., 2798., 3862., 0.,    0.,    0.,    0.,    710.,  1838.,
      2966., 4094., 0.,    0.,    0.,    0.};
  const std::array<int, 4> in_shape = {{3, 3, 6, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x4x3x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {1., 0., 2., 0.,  0., 0.,  3., 0., 4.,
                                         0., 0., 0., 5.,  0., 6.,  0., 0., 0.,
                                         7., 0., 8., 0.,  0., 0.,  9., 0., 10.,
                                         0., 0., 0., 11., 0., 12., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{3, 4, 3, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x4x3x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {1., 0., 2., 0.,  0., 0.,  3., 0., 4.,
                                         0., 0., 0., 5.,  0., 6.,  0., 0., 0.,
                                         7., 0., 8., 0.,  0., 0.,  9., 0., 10.,
                                         0., 0., 0., 11., 0., 12., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{3, 4, 3, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x4x3x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,  0., 11., 0., 0., 0., 17., 0., 23., 0., 0., 0.,
      29., 0., 35., 0., 0., 0., 41., 0., 47., 0., 0., 0.,
      53., 0., 59., 0., 0., 0., 65., 0., 71., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{3, 4, 3, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x4x3x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,  0., 11., 0., 0., 0., 17., 0., 23., 0., 0., 0.,
      29., 0., 35., 0., 0., 0., 41., 0., 47., 0., 0., 0.,
      53., 0., 59., 0., 0., 0., 65., 0., 71., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{3, 4, 3, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x4x3x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,  0., 70.,  0., 0., 0., 110., 0., 150., 0., 0., 0.,
      190., 0., 230., 0., 0., 0., 270., 0., 310., 0., 0., 0.,
      350., 0., 390., 0., 0., 0., 430., 0., 470., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{3, 4, 3, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x4x3x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,  0., 70.,  0., 0., 0., 110., 0., 150., 0., 0., 0.,
      190., 0., 230., 0., 0., 0., 270., 0., 310., 0., 0., 0.,
      350., 0., 390., 0., 0., 0., 430., 0., 470., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{3, 4, 3, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x4x3x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,  2.,  0., 0., 2.,  4.,  0., 0.,  0.,  0., 0.,  0.,  3., 6., 0.,
      0.,  4.,  8., 0., 0.,  0.,  0., 0.,  0.,  5., 10., 0.,  0., 6., 12.,
      0.,  0.,  0., 0., 0.,  0.,  7., 14., 0.,  0., 8.,  16., 0., 0., 0.,
      0.,  0.,  0., 9., 18., 0.,  0., 10., 20., 0., 0.,  0.,  0., 0., 0.,
      11., 22., 0., 0., 12., 24., 0., 0.,  0.,  0., 0.,  0.};
  const std::array<int, 4> in_shape = {{3, 4, 3, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x4x3x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,  2.,  0., 0., 2.,  4.,  0., 0.,  0.,  0., 0.,  0.,  3., 6., 0.,
      0.,  4.,  8., 0., 0.,  0.,  0., 0.,  0.,  5., 10., 0.,  0., 6., 12.,
      0.,  0.,  0., 0., 0.,  0.,  7., 14., 0.,  0., 8.,  16., 0., 0., 0.,
      0.,  0.,  0., 9., 18., 0.,  0., 10., 20., 0., 0.,  0.,  0., 0., 0.,
      11., 22., 0., 0., 12., 24., 0., 0.,  0.,  0., 0.,  0.};
  const std::array<int, 4> in_shape = {{3, 4, 3, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x4x3x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,  11.,  0., 0., 11., 25.,  0., 0., 0., 0., 0., 0.,
      17., 39.,  0., 0., 23., 53.,  0., 0., 0., 0., 0., 0.,
      29., 67.,  0., 0., 35., 81.,  0., 0., 0., 0., 0., 0.,
      41., 95.,  0., 0., 47., 109., 0., 0., 0., 0., 0., 0.,
      53., 123., 0., 0., 59., 137., 0., 0., 0., 0., 0., 0.,
      65., 151., 0., 0., 71., 165., 0., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{3, 4, 3, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x4x3x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,  11.,  0., 0., 11., 25.,  0., 0., 0., 0., 0., 0.,
      17., 39.,  0., 0., 23., 53.,  0., 0., 0., 0., 0., 0.,
      29., 67.,  0., 0., 35., 81.,  0., 0., 0., 0., 0., 0.,
      41., 95.,  0., 0., 47., 109., 0., 0., 0., 0., 0., 0.,
      53., 123., 0., 0., 59., 137., 0., 0., 0., 0., 0., 0.,
      65., 151., 0., 0., 71., 165., 0., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{3, 4, 3, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x4x3x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,  70.,   0., 0., 70.,  174.,  0., 0., 0., 0., 0., 0.,
      110., 278.,  0., 0., 150., 382.,  0., 0., 0., 0., 0., 0.,
      190., 486.,  0., 0., 230., 590.,  0., 0., 0., 0., 0., 0.,
      270., 694.,  0., 0., 310., 798.,  0., 0., 0., 0., 0., 0.,
      350., 902.,  0., 0., 390., 1006., 0., 0., 0., 0., 0., 0.,
      430., 1110., 0., 0., 470., 1214., 0., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{3, 4, 3, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x4x3x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,  70.,   0., 0., 70.,  174.,  0., 0., 0., 0., 0., 0.,
      110., 278.,  0., 0., 150., 382.,  0., 0., 0., 0., 0., 0.,
      190., 486.,  0., 0., 230., 590.,  0., 0., 0., 0., 0., 0.,
      270., 694.,  0., 0., 310., 798.,  0., 0., 0., 0., 0., 0.,
      350., 902.,  0., 0., 390., 1006., 0., 0., 0., 0., 0., 0.,
      430., 1110., 0., 0., 470., 1214., 0., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{3, 4, 3, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x4x3x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,  2.,  3.,  4.,  0., 0., 0., 0., 2.,  4.,  6.,  8.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 3.,  6.,  9.,  12., 0., 0., 0., 0.,
      4.,  8.,  12., 16., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      5.,  10., 15., 20., 0., 0., 0., 0., 6.,  12., 18., 24., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 7.,  14., 21., 28., 0., 0., 0., 0.,
      8.,  16., 24., 32., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      9.,  18., 27., 36., 0., 0., 0., 0., 10., 20., 30., 40., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 11., 22., 33., 44., 0., 0., 0., 0.,
      12., 24., 36., 48., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{3, 4, 3, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x4x3x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,  2.,  3.,  4.,  0., 0., 0., 0., 2.,  4.,  6.,  8.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 3.,  6.,  9.,  12., 0., 0., 0., 0.,
      4.,  8.,  12., 16., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      5.,  10., 15., 20., 0., 0., 0., 0., 6.,  12., 18., 24., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 7.,  14., 21., 28., 0., 0., 0., 0.,
      8.,  16., 24., 32., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      9.,  18., 27., 36., 0., 0., 0., 0., 10., 20., 30., 40., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 11., 22., 33., 44., 0., 0., 0., 0.,
      12., 24., 36., 48., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{3, 4, 3, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x4x3x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,  11.,  17.,  23.,  0., 0., 0., 0., 11., 25.,  39.,  53.,
      0.,  0.,   0.,   0.,   0., 0., 0., 0., 0.,  0.,   0.,   0.,
      17., 39.,  61.,  83.,  0., 0., 0., 0., 23., 53.,  83.,  113.,
      0.,  0.,   0.,   0.,   0., 0., 0., 0., 0.,  0.,   0.,   0.,
      29., 67.,  105., 143., 0., 0., 0., 0., 35., 81.,  127., 173.,
      0.,  0.,   0.,   0.,   0., 0., 0., 0., 0.,  0.,   0.,   0.,
      41., 95.,  149., 203., 0., 0., 0., 0., 47., 109., 171., 233.,
      0.,  0.,   0.,   0.,   0., 0., 0., 0., 0.,  0.,   0.,   0.,
      53., 123., 193., 263., 0., 0., 0., 0., 59., 137., 215., 293.,
      0.,  0.,   0.,   0.,   0., 0., 0., 0., 0.,  0.,   0.,   0.,
      65., 151., 237., 323., 0., 0., 0., 0., 71., 165., 259., 353.,
      0.,  0.,   0.,   0.,   0., 0., 0., 0., 0.,  0.,   0.,   0.};
  const std::array<int, 4> in_shape = {{3, 4, 3, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x4x3x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,  11.,  17.,  23.,  0., 0., 0., 0., 11., 25.,  39.,  53.,
      0.,  0.,   0.,   0.,   0., 0., 0., 0., 0.,  0.,   0.,   0.,
      17., 39.,  61.,  83.,  0., 0., 0., 0., 23., 53.,  83.,  113.,
      0.,  0.,   0.,   0.,   0., 0., 0., 0., 0.,  0.,   0.,   0.,
      29., 67.,  105., 143., 0., 0., 0., 0., 35., 81.,  127., 173.,
      0.,  0.,   0.,   0.,   0., 0., 0., 0., 0.,  0.,   0.,   0.,
      41., 95.,  149., 203., 0., 0., 0., 0., 47., 109., 171., 233.,
      0.,  0.,   0.,   0.,   0., 0., 0., 0., 0.,  0.,   0.,   0.,
      53., 123., 193., 263., 0., 0., 0., 0., 59., 137., 215., 293.,
      0.,  0.,   0.,   0.,   0., 0., 0., 0., 0.,  0.,   0.,   0.,
      65., 151., 237., 323., 0., 0., 0., 0., 71., 165., 259., 353.,
      0.,  0.,   0.,   0.,   0., 0., 0., 0., 0.,  0.,   0.,   0.};
  const std::array<int, 4> in_shape = {{3, 4, 3, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x4x3x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,  70.,   110.,  150.,  0., 0., 0., 0., 70.,  174.,  278.,  382.,
      0.,   0.,    0.,    0.,    0., 0., 0., 0., 0.,   0.,    0.,    0.,
      110., 278.,  446.,  614.,  0., 0., 0., 0., 150., 382.,  614.,  846.,
      0.,   0.,    0.,    0.,    0., 0., 0., 0., 0.,   0.,    0.,    0.,
      190., 486.,  782.,  1078., 0., 0., 0., 0., 230., 590.,  950.,  1310.,
      0.,   0.,    0.,    0.,    0., 0., 0., 0., 0.,   0.,    0.,    0.,
      270., 694.,  1118., 1542., 0., 0., 0., 0., 310., 798.,  1286., 1774.,
      0.,   0.,    0.,    0.,    0., 0., 0., 0., 0.,   0.,    0.,    0.,
      350., 902.,  1454., 2006., 0., 0., 0., 0., 390., 1006., 1622., 2238.,
      0.,   0.,    0.,    0.,    0., 0., 0., 0., 0.,   0.,    0.,    0.,
      430., 1110., 1790., 2470., 0., 0., 0., 0., 470., 1214., 1958., 2702.,
      0.,   0.,    0.,    0.,    0., 0., 0., 0., 0.,   0.,    0.,    0.};
  const std::array<int, 4> in_shape = {{3, 4, 3, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x4x3x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,  70.,   110.,  150.,  0., 0., 0., 0., 70.,  174.,  278.,  382.,
      0.,   0.,    0.,    0.,    0., 0., 0., 0., 0.,   0.,    0.,    0.,
      110., 278.,  446.,  614.,  0., 0., 0., 0., 150., 382.,  614.,  846.,
      0.,   0.,    0.,    0.,    0., 0., 0., 0., 0.,   0.,    0.,    0.,
      190., 486.,  782.,  1078., 0., 0., 0., 0., 230., 590.,  950.,  1310.,
      0.,   0.,    0.,    0.,    0., 0., 0., 0., 0.,   0.,    0.,    0.,
      270., 694.,  1118., 1542., 0., 0., 0., 0., 310., 798.,  1286., 1774.,
      0.,   0.,    0.,    0.,    0., 0., 0., 0., 0.,   0.,    0.,    0.,
      350., 902.,  1454., 2006., 0., 0., 0., 0., 390., 1006., 1622., 2238.,
      0.,   0.,    0.,    0.,    0., 0., 0., 0., 0.,   0.,    0.,    0.,
      430., 1110., 1790., 2470., 0., 0., 0., 0., 470., 1214., 1958., 2702.,
      0.,   0.,    0.,    0.,    0., 0., 0., 0., 0.,   0.,    0.,    0.};
  const std::array<int, 4> in_shape = {{3, 4, 3, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x4x4x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1., 0., 2.,  0., 0., 0., 0., 0., 3.,  0., 4.,  0., 0., 0., 0., 0.,
      5., 0., 6.,  0., 0., 0., 0., 0., 7.,  0., 8.,  0., 0., 0., 0., 0.,
      9., 0., 10., 0., 0., 0., 0., 0., 11., 0., 12., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{3, 4, 4, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x4x4x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1., 0., 2.,  0., 0., 0., 0., 0., 3.,  0., 4.,  0., 0., 0., 0., 0.,
      5., 0., 6.,  0., 0., 0., 0., 0., 7.,  0., 8.,  0., 0., 0., 0., 0.,
      9., 0., 10., 0., 0., 0., 0., 0., 11., 0., 12., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{3, 4, 4, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x4x4x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,  0., 11., 0., 0., 0., 0., 0., 17., 0., 23., 0., 0., 0., 0., 0.,
      29., 0., 35., 0., 0., 0., 0., 0., 41., 0., 47., 0., 0., 0., 0., 0.,
      53., 0., 59., 0., 0., 0., 0., 0., 65., 0., 71., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{3, 4, 4, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x4x4x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,  0., 11., 0., 0., 0., 0., 0., 17., 0., 23., 0., 0., 0., 0., 0.,
      29., 0., 35., 0., 0., 0., 0., 0., 41., 0., 47., 0., 0., 0., 0., 0.,
      53., 0., 59., 0., 0., 0., 0., 0., 65., 0., 71., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{3, 4, 4, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x4x4x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,  0., 70.,  0., 0., 0., 0., 0., 110., 0., 150., 0., 0., 0., 0., 0.,
      190., 0., 230., 0., 0., 0., 0., 0., 270., 0., 310., 0., 0., 0., 0., 0.,
      350., 0., 390., 0., 0., 0., 0., 0., 430., 0., 470., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{3, 4, 4, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x4x4x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,  0., 70.,  0., 0., 0., 0., 0., 110., 0., 150., 0., 0., 0., 0., 0.,
      190., 0., 230., 0., 0., 0., 0., 0., 270., 0., 310., 0., 0., 0., 0., 0.,
      350., 0., 390., 0., 0., 0., 0., 0., 430., 0., 470., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{3, 4, 4, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x4x4x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,  2.,  0., 0., 2.,  4.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      3.,  6.,  0., 0., 4.,  8.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      5.,  10., 0., 0., 6.,  12., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      7.,  14., 0., 0., 8.,  16., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      9.,  18., 0., 0., 10., 20., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      11., 22., 0., 0., 12., 24., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{3, 4, 4, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x4x4x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,  2.,  0., 0., 2.,  4.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      3.,  6.,  0., 0., 4.,  8.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      5.,  10., 0., 0., 6.,  12., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      7.,  14., 0., 0., 8.,  16., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      9.,  18., 0., 0., 10., 20., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      11., 22., 0., 0., 12., 24., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{3, 4, 4, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x4x4x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,  11.,  0., 0., 11., 25.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      17., 39.,  0., 0., 23., 53.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      29., 67.,  0., 0., 35., 81.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      41., 95.,  0., 0., 47., 109., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      53., 123., 0., 0., 59., 137., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      65., 151., 0., 0., 71., 165., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{3, 4, 4, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x4x4x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,  11.,  0., 0., 11., 25.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      17., 39.,  0., 0., 23., 53.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      29., 67.,  0., 0., 35., 81.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      41., 95.,  0., 0., 47., 109., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      53., 123., 0., 0., 59., 137., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      65., 151., 0., 0., 71., 165., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{3, 4, 4, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x4x4x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,  70.,   0., 0., 70.,  174.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      110., 278.,  0., 0., 150., 382.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      190., 486.,  0., 0., 230., 590.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      270., 694.,  0., 0., 310., 798.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      350., 902.,  0., 0., 390., 1006., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      430., 1110., 0., 0., 470., 1214., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{3, 4, 4, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x4x4x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,  70.,   0., 0., 70.,  174.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      110., 278.,  0., 0., 150., 382.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      190., 486.,  0., 0., 230., 590.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      270., 694.,  0., 0., 310., 798.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      350., 902.,  0., 0., 390., 1006., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      430., 1110., 0., 0., 470., 1214., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{3, 4, 4, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x4x4x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,  2.,  3.,  4.,  0., 0., 0., 0., 2.,  4.,  6.,  8.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      3.,  6.,  9.,  12., 0., 0., 0., 0., 4.,  8.,  12., 16., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      5.,  10., 15., 20., 0., 0., 0., 0., 6.,  12., 18., 24., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      7.,  14., 21., 28., 0., 0., 0., 0., 8.,  16., 24., 32., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      9.,  18., 27., 36., 0., 0., 0., 0., 10., 20., 30., 40., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      11., 22., 33., 44., 0., 0., 0., 0., 12., 24., 36., 48., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{3, 4, 4, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x4x4x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,  2.,  3.,  4.,  0., 0., 0., 0., 2.,  4.,  6.,  8.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      3.,  6.,  9.,  12., 0., 0., 0., 0., 4.,  8.,  12., 16., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      5.,  10., 15., 20., 0., 0., 0., 0., 6.,  12., 18., 24., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      7.,  14., 21., 28., 0., 0., 0., 0., 8.,  16., 24., 32., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      9.,  18., 27., 36., 0., 0., 0., 0., 10., 20., 30., 40., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      11., 22., 33., 44., 0., 0., 0., 0., 12., 24., 36., 48., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{3, 4, 4, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x4x4x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,  11.,  17.,  23.,  0.,  0.,   0.,   0.,   11., 25.,  39.,  53.,
      0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,   17., 39.,  61.,  83.,
      0.,  0.,   0.,   0.,   23., 53.,  83.,  113., 0.,  0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,
      0.,  0.,   0.,   0.,   29., 67.,  105., 143., 0.,  0.,   0.,   0.,
      35., 81.,  127., 173., 0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,
      41., 95.,  149., 203., 0.,  0.,   0.,   0.,   47., 109., 171., 233.,
      0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,   53., 123., 193., 263.,
      0.,  0.,   0.,   0.,   59., 137., 215., 293., 0.,  0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,
      0.,  0.,   0.,   0.,   65., 151., 237., 323., 0.,  0.,   0.,   0.,
      71., 165., 259., 353., 0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.};
  const std::array<int, 4> in_shape = {{3, 4, 4, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x4x4x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,  11.,  17.,  23.,  0.,  0.,   0.,   0.,   11., 25.,  39.,  53.,
      0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,   17., 39.,  61.,  83.,
      0.,  0.,   0.,   0.,   23., 53.,  83.,  113., 0.,  0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,
      0.,  0.,   0.,   0.,   29., 67.,  105., 143., 0.,  0.,   0.,   0.,
      35., 81.,  127., 173., 0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,
      41., 95.,  149., 203., 0.,  0.,   0.,   0.,   47., 109., 171., 233.,
      0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,   53., 123., 193., 263.,
      0.,  0.,   0.,   0.,   59., 137., 215., 293., 0.,  0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,
      0.,  0.,   0.,   0.,   65., 151., 237., 323., 0.,  0.,   0.,   0.,
      71., 165., 259., 353., 0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.,   0.,  0.,   0.,   0.};
  const std::array<int, 4> in_shape = {{3, 4, 4, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x4x4x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,   70.,   110., 150., 0.,    0.,    0.,    0.,    70.,   174.,  278.,
      382.,  0.,    0.,   0.,   0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,   0.,   0.,    0.,    0.,    0.,    0.,    0.,    110.,
      278.,  446.,  614., 0.,   0.,    0.,    0.,    150.,  382.,  614.,  846.,
      0.,    0.,    0.,   0.,   0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,   0.,   0.,    0.,    0.,    0.,    0.,    190.,  486.,
      782.,  1078., 0.,   0.,   0.,    0.,    230.,  590.,  950.,  1310., 0.,
      0.,    0.,    0.,   0.,   0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,   0.,   0.,    0.,    0.,    0.,    270.,  694.,  1118.,
      1542., 0.,    0.,   0.,   0.,    310.,  798.,  1286., 1774., 0.,    0.,
      0.,    0.,    0.,   0.,   0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,   0.,   0.,    0.,    0.,    350.,  902.,  1454., 2006.,
      0.,    0.,    0.,   0.,   390.,  1006., 1622., 2238., 0.,    0.,    0.,
      0.,    0.,    0.,   0.,   0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,   0.,   0.,    0.,    430.,  1110., 1790., 2470., 0.,
      0.,    0.,    0.,   470., 1214., 1958., 2702., 0.,    0.,    0.,    0.,
      0.,    0.,    0.,   0.,   0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,   0.,   0.};
  const std::array<int, 4> in_shape = {{3, 4, 4, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x4x4x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,   70.,   110., 150., 0.,    0.,    0.,    0.,    70.,   174.,  278.,
      382.,  0.,    0.,   0.,   0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,   0.,   0.,    0.,    0.,    0.,    0.,    0.,    110.,
      278.,  446.,  614., 0.,   0.,    0.,    0.,    150.,  382.,  614.,  846.,
      0.,    0.,    0.,   0.,   0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,   0.,   0.,    0.,    0.,    0.,    0.,    190.,  486.,
      782.,  1078., 0.,   0.,   0.,    0.,    230.,  590.,  950.,  1310., 0.,
      0.,    0.,    0.,   0.,   0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,   0.,   0.,    0.,    0.,    0.,    270.,  694.,  1118.,
      1542., 0.,    0.,   0.,   0.,    310.,  798.,  1286., 1774., 0.,    0.,
      0.,    0.,    0.,   0.,   0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,   0.,   0.,    0.,    0.,    350.,  902.,  1454., 2006.,
      0.,    0.,    0.,   0.,   390.,  1006., 1622., 2238., 0.,    0.,    0.,
      0.,    0.,    0.,   0.,   0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,   0.,   0.,    0.,    430.,  1110., 1790., 2470., 0.,
      0.,    0.,    0.,   470., 1214., 1958., 2702., 0.,    0.,    0.,    0.,
      0.,    0.,    0.,   0.,   0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,   0.,   0.};
  const std::array<int, 4> in_shape = {{3, 4, 4, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x4x6x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,  0., 2.,  0.,  3.,  0.,  0.,  0.,  0.,  0., 0.,  0., 4., 0., 5.,
      0.,  6., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  7., 0.,  8., 0., 9., 0.,
      0.,  0., 0.,  0.,  0.,  0.,  10., 0.,  11., 0., 12., 0., 0., 0., 0.,
      0.,  0., 0.,  13., 0.,  14., 0.,  15., 0.,  0., 0.,  0., 0., 0., 0.,
      16., 0., 17., 0.,  18., 0.,  0.,  0.,  0.,  0., 0.,  0.};
  const std::array<int, 4> in_shape = {{3, 4, 6, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x4x6x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,  0., 2.,  0.,  3.,  0.,  0.,  0.,  0.,  0., 0.,  0., 4., 0., 5.,
      0.,  6., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  7., 0.,  8., 0., 9., 0.,
      0.,  0., 0.,  0.,  0.,  0.,  10., 0.,  11., 0., 12., 0., 0., 0., 0.,
      0.,  0., 0.,  13., 0.,  14., 0.,  15., 0.,  0., 0.,  0., 0., 0., 0.,
      16., 0., 17., 0.,  18., 0.,  0.,  0.,  0.,  0., 0.,  0.};
  const std::array<int, 4> in_shape = {{3, 4, 6, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x4x6x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,   0., 11., 0., 17., 0., 0.,  0., 0.,  0., 0.,  0., 23., 0., 29.,  0.,
      35.,  0., 0.,  0., 0.,  0., 0.,  0., 41., 0., 47., 0., 53., 0., 0.,   0.,
      0.,   0., 0.,  0., 59., 0., 65., 0., 71., 0., 0.,  0., 0.,  0., 0.,   0.,
      77.,  0., 83., 0., 89., 0., 0.,  0., 0.,  0., 0.,  0., 95., 0., 101., 0.,
      107., 0., 0.,  0., 0.,  0., 0.,  0.};
  const std::array<int, 4> in_shape = {{3, 4, 6, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x4x6x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,   0., 11., 0., 17., 0., 0.,  0., 0.,  0., 0.,  0., 23., 0., 29.,  0.,
      35.,  0., 0.,  0., 0.,  0., 0.,  0., 41., 0., 47., 0., 53., 0., 0.,   0.,
      0.,   0., 0.,  0., 59., 0., 65., 0., 71., 0., 0.,  0., 0.,  0., 0.,   0.,
      77.,  0., 83., 0., 89., 0., 0.,  0., 0.,  0., 0.,  0., 95., 0., 101., 0.,
      107., 0., 0.,  0., 0.,  0., 0.,  0.};
  const std::array<int, 4> in_shape = {{3, 4, 6, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x4x6x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,  0., 70.,  0., 110., 0., 0., 0., 0., 0., 0., 0.,
      150., 0., 190., 0., 230., 0., 0., 0., 0., 0., 0., 0.,
      270., 0., 310., 0., 350., 0., 0., 0., 0., 0., 0., 0.,
      390., 0., 430., 0., 470., 0., 0., 0., 0., 0., 0., 0.,
      510., 0., 550., 0., 590., 0., 0., 0., 0., 0., 0., 0.,
      630., 0., 670., 0., 710., 0., 0., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{3, 4, 6, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x4x6x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,  0., 70.,  0., 110., 0., 0., 0., 0., 0., 0., 0.,
      150., 0., 190., 0., 230., 0., 0., 0., 0., 0., 0., 0.,
      270., 0., 310., 0., 350., 0., 0., 0., 0., 0., 0., 0.,
      390., 0., 430., 0., 470., 0., 0., 0., 0., 0., 0., 0.,
      510., 0., 550., 0., 590., 0., 0., 0., 0., 0., 0., 0.,
      630., 0., 670., 0., 710., 0., 0., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{3, 4, 6, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x4x6x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,  2.,  0., 0., 2.,  4.,  0., 0., 3.,  6.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 4.,  8.,  0., 0., 5.,  10., 0., 0.,
      6.,  12., 0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      7.,  14., 0., 0., 8.,  16., 0., 0., 9.,  18., 0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 10., 20., 0., 0., 11., 22., 0., 0.,
      12., 24., 0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      13., 26., 0., 0., 14., 28., 0., 0., 15., 30., 0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 16., 32., 0., 0., 17., 34., 0., 0.,
      18., 36., 0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.};
  const std::array<int, 4> in_shape = {{3, 4, 6, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x4x6x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,  2.,  0., 0., 2.,  4.,  0., 0., 3.,  6.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 4.,  8.,  0., 0., 5.,  10., 0., 0.,
      6.,  12., 0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      7.,  14., 0., 0., 8.,  16., 0., 0., 9.,  18., 0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 10., 20., 0., 0., 11., 22., 0., 0.,
      12., 24., 0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      13., 26., 0., 0., 14., 28., 0., 0., 15., 30., 0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 16., 32., 0., 0., 17., 34., 0., 0.,
      18., 36., 0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.};
  const std::array<int, 4> in_shape = {{3, 4, 6, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x4x6x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,  11.,  0., 0., 11.,  25.,  0., 0., 17.,  39.,  0., 0.,
      0.,  0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0., 0.,
      23., 53.,  0., 0., 29.,  67.,  0., 0., 35.,  81.,  0., 0.,
      0.,  0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0., 0.,
      41., 95.,  0., 0., 47.,  109., 0., 0., 53.,  123., 0., 0.,
      0.,  0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0., 0.,
      59., 137., 0., 0., 65.,  151., 0., 0., 71.,  165., 0., 0.,
      0.,  0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0., 0.,
      77., 179., 0., 0., 83.,  193., 0., 0., 89.,  207., 0., 0.,
      0.,  0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0., 0.,
      95., 221., 0., 0., 101., 235., 0., 0., 107., 249., 0., 0.,
      0.,  0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0., 0.};
  const std::array<int, 4> in_shape = {{3, 4, 6, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x4x6x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,  11.,  0., 0., 11.,  25.,  0., 0., 17.,  39.,  0., 0.,
      0.,  0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0., 0.,
      23., 53.,  0., 0., 29.,  67.,  0., 0., 35.,  81.,  0., 0.,
      0.,  0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0., 0.,
      41., 95.,  0., 0., 47.,  109., 0., 0., 53.,  123., 0., 0.,
      0.,  0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0., 0.,
      59., 137., 0., 0., 65.,  151., 0., 0., 71.,  165., 0., 0.,
      0.,  0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0., 0.,
      77., 179., 0., 0., 83.,  193., 0., 0., 89.,  207., 0., 0.,
      0.,  0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0., 0.,
      95., 221., 0., 0., 101., 235., 0., 0., 107., 249., 0., 0.,
      0.,  0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0., 0.};
  const std::array<int, 4> in_shape = {{3, 4, 6, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x4x6x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,  70.,   0., 0., 70.,  174.,  0., 0., 110., 278.,  0., 0.,
      0.,   0.,    0., 0., 0.,   0.,    0., 0., 0.,   0.,    0., 0.,
      150., 382.,  0., 0., 190., 486.,  0., 0., 230., 590.,  0., 0.,
      0.,   0.,    0., 0., 0.,   0.,    0., 0., 0.,   0.,    0., 0.,
      270., 694.,  0., 0., 310., 798.,  0., 0., 350., 902.,  0., 0.,
      0.,   0.,    0., 0., 0.,   0.,    0., 0., 0.,   0.,    0., 0.,
      390., 1006., 0., 0., 430., 1110., 0., 0., 470., 1214., 0., 0.,
      0.,   0.,    0., 0., 0.,   0.,    0., 0., 0.,   0.,    0., 0.,
      510., 1318., 0., 0., 550., 1422., 0., 0., 590., 1526., 0., 0.,
      0.,   0.,    0., 0., 0.,   0.,    0., 0., 0.,   0.,    0., 0.,
      630., 1630., 0., 0., 670., 1734., 0., 0., 710., 1838., 0., 0.,
      0.,   0.,    0., 0., 0.,   0.,    0., 0., 0.,   0.,    0., 0.};
  const std::array<int, 4> in_shape = {{3, 4, 6, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x4x6x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,  70.,   0., 0., 70.,  174.,  0., 0., 110., 278.,  0., 0.,
      0.,   0.,    0., 0., 0.,   0.,    0., 0., 0.,   0.,    0., 0.,
      150., 382.,  0., 0., 190., 486.,  0., 0., 230., 590.,  0., 0.,
      0.,   0.,    0., 0., 0.,   0.,    0., 0., 0.,   0.,    0., 0.,
      270., 694.,  0., 0., 310., 798.,  0., 0., 350., 902.,  0., 0.,
      0.,   0.,    0., 0., 0.,   0.,    0., 0., 0.,   0.,    0., 0.,
      390., 1006., 0., 0., 430., 1110., 0., 0., 470., 1214., 0., 0.,
      0.,   0.,    0., 0., 0.,   0.,    0., 0., 0.,   0.,    0., 0.,
      510., 1318., 0., 0., 550., 1422., 0., 0., 590., 1526., 0., 0.,
      0.,   0.,    0., 0., 0.,   0.,    0., 0., 0.,   0.,    0., 0.,
      630., 1630., 0., 0., 670., 1734., 0., 0., 710., 1838., 0., 0.,
      0.,   0.,    0., 0., 0.,   0.,    0., 0., 0.,   0.,    0., 0.};
  const std::array<int, 4> in_shape = {{3, 4, 6, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x4x6x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,  2.,  3.,  4.,  0., 0., 0., 0., 2.,  4.,  6.,  8.,  0., 0., 0., 0.,
      3.,  6.,  9.,  12., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      4.,  8.,  12., 16., 0., 0., 0., 0., 5.,  10., 15., 20., 0., 0., 0., 0.,
      6.,  12., 18., 24., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      7.,  14., 21., 28., 0., 0., 0., 0., 8.,  16., 24., 32., 0., 0., 0., 0.,
      9.,  18., 27., 36., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      10., 20., 30., 40., 0., 0., 0., 0., 11., 22., 33., 44., 0., 0., 0., 0.,
      12., 24., 36., 48., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      13., 26., 39., 52., 0., 0., 0., 0., 14., 28., 42., 56., 0., 0., 0., 0.,
      15., 30., 45., 60., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      16., 32., 48., 64., 0., 0., 0., 0., 17., 34., 51., 68., 0., 0., 0., 0.,
      18., 36., 54., 72., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{3, 4, 6, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x4x6x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,  2.,  3.,  4.,  0., 0., 0., 0., 2.,  4.,  6.,  8.,  0., 0., 0., 0.,
      3.,  6.,  9.,  12., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      4.,  8.,  12., 16., 0., 0., 0., 0., 5.,  10., 15., 20., 0., 0., 0., 0.,
      6.,  12., 18., 24., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      7.,  14., 21., 28., 0., 0., 0., 0., 8.,  16., 24., 32., 0., 0., 0., 0.,
      9.,  18., 27., 36., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      10., 20., 30., 40., 0., 0., 0., 0., 11., 22., 33., 44., 0., 0., 0., 0.,
      12., 24., 36., 48., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      13., 26., 39., 52., 0., 0., 0., 0., 14., 28., 42., 56., 0., 0., 0., 0.,
      15., 30., 45., 60., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      16., 32., 48., 64., 0., 0., 0., 0., 17., 34., 51., 68., 0., 0., 0., 0.,
      18., 36., 54., 72., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{3, 4, 6, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x4x6x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,  11.,  17.,  23.,  0.,   0.,   0.,   0.,   11.,  25.,  39.,  53.,
      0.,  0.,   0.,   0.,   17.,  39.,  61.,  83.,  0.,   0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      23., 53.,  83.,  113., 0.,   0.,   0.,   0.,   29.,  67.,  105., 143.,
      0.,  0.,   0.,   0.,   35.,  81.,  127., 173., 0.,   0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      41., 95.,  149., 203., 0.,   0.,   0.,   0.,   47.,  109., 171., 233.,
      0.,  0.,   0.,   0.,   53.,  123., 193., 263., 0.,   0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      59., 137., 215., 293., 0.,   0.,   0.,   0.,   65.,  151., 237., 323.,
      0.,  0.,   0.,   0.,   71.,  165., 259., 353., 0.,   0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      77., 179., 281., 383., 0.,   0.,   0.,   0.,   83.,  193., 303., 413.,
      0.,  0.,   0.,   0.,   89.,  207., 325., 443., 0.,   0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      95., 221., 347., 473., 0.,   0.,   0.,   0.,   101., 235., 369., 503.,
      0.,  0.,   0.,   0.,   107., 249., 391., 533., 0.,   0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.};
  const std::array<int, 4> in_shape = {{3, 4, 6, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x4x6x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,  11.,  17.,  23.,  0.,   0.,   0.,   0.,   11.,  25.,  39.,  53.,
      0.,  0.,   0.,   0.,   17.,  39.,  61.,  83.,  0.,   0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      23., 53.,  83.,  113., 0.,   0.,   0.,   0.,   29.,  67.,  105., 143.,
      0.,  0.,   0.,   0.,   35.,  81.,  127., 173., 0.,   0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      41., 95.,  149., 203., 0.,   0.,   0.,   0.,   47.,  109., 171., 233.,
      0.,  0.,   0.,   0.,   53.,  123., 193., 263., 0.,   0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      59., 137., 215., 293., 0.,   0.,   0.,   0.,   65.,  151., 237., 323.,
      0.,  0.,   0.,   0.,   71.,  165., 259., 353., 0.,   0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      77., 179., 281., 383., 0.,   0.,   0.,   0.,   83.,  193., 303., 413.,
      0.,  0.,   0.,   0.,   89.,  207., 325., 443., 0.,   0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      95., 221., 347., 473., 0.,   0.,   0.,   0.,   101., 235., 369., 503.,
      0.,  0.,   0.,   0.,   107., 249., 391., 533., 0.,   0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.};
  const std::array<int, 4> in_shape = {{3, 4, 6, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x4x6x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,   70.,   110.,  150.,  0.,    0.,    0.,    0.,    70.,   174.,
      278.,  382.,  0.,    0.,    0.,    0.,    110.,  278.,  446.,  614.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    150.,  382.,
      614.,  846.,  0.,    0.,    0.,    0.,    190.,  486.,  782.,  1078.,
      0.,    0.,    0.,    0.,    230.,  590.,  950.,  1310., 0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    270.,  694.,  1118., 1542.,
      0.,    0.,    0.,    0.,    310.,  798.,  1286., 1774., 0.,    0.,
      0.,    0.,    350.,  902.,  1454., 2006., 0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    390.,  1006., 1622., 2238., 0.,    0.,
      0.,    0.,    430.,  1110., 1790., 2470., 0.,    0.,    0.,    0.,
      470.,  1214., 1958., 2702., 0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    510.,  1318., 2126., 2934., 0.,    0.,    0.,    0.,
      550.,  1422., 2294., 3166., 0.,    0.,    0.,    0.,    590.,  1526.,
      2462., 3398., 0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      630.,  1630., 2630., 3630., 0.,    0.,    0.,    0.,    670.,  1734.,
      2798., 3862., 0.,    0.,    0.,    0.,    710.,  1838., 2966., 4094.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.};
  const std::array<int, 4> in_shape = {{3, 4, 6, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x4x6x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,   70.,   110.,  150.,  0.,    0.,    0.,    0.,    70.,   174.,
      278.,  382.,  0.,    0.,    0.,    0.,    110.,  278.,  446.,  614.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    150.,  382.,
      614.,  846.,  0.,    0.,    0.,    0.,    190.,  486.,  782.,  1078.,
      0.,    0.,    0.,    0.,    230.,  590.,  950.,  1310., 0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    270.,  694.,  1118., 1542.,
      0.,    0.,    0.,    0.,    310.,  798.,  1286., 1774., 0.,    0.,
      0.,    0.,    350.,  902.,  1454., 2006., 0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    390.,  1006., 1622., 2238., 0.,    0.,
      0.,    0.,    430.,  1110., 1790., 2470., 0.,    0.,    0.,    0.,
      470.,  1214., 1958., 2702., 0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    510.,  1318., 2126., 2934., 0.,    0.,    0.,    0.,
      550.,  1422., 2294., 3166., 0.,    0.,    0.,    0.,    590.,  1526.,
      2462., 3398., 0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      630.,  1630., 2630., 3630., 0.,    0.,    0.,    0.,    670.,  1734.,
      2798., 3862., 0.,    0.,    0.,    0.,    710.,  1838., 2966., 4094.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.};
  const std::array<int, 4> in_shape = {{3, 4, 6, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x6x3x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,  0., 2.,  0., 0.,  0., 3.,  0., 4.,  0., 0.,  0., 5.,  0.,
      6.,  0., 0.,  0., 7.,  0., 8.,  0., 0.,  0., 9.,  0., 10., 0.,
      0.,  0., 11., 0., 12., 0., 0.,  0., 13., 0., 14., 0., 0.,  0.,
      15., 0., 16., 0., 0.,  0., 17., 0., 18., 0., 0.,  0.};
  const std::array<int, 4> in_shape = {{3, 6, 3, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x6x3x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,  0., 2.,  0., 0.,  0., 3.,  0., 4.,  0., 0.,  0., 5.,  0.,
      6.,  0., 0.,  0., 7.,  0., 8.,  0., 0.,  0., 9.,  0., 10., 0.,
      0.,  0., 11., 0., 12., 0., 0.,  0., 13., 0., 14., 0., 0.,  0.,
      15., 0., 16., 0., 0.,  0., 17., 0., 18., 0., 0.,  0.};
  const std::array<int, 4> in_shape = {{3, 6, 3, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x6x3x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,  0., 11., 0., 0.,  0., 17.,  0., 23.,  0., 0.,  0., 29., 0.,
      35., 0., 0.,  0., 41., 0., 47.,  0., 0.,   0., 53., 0., 59., 0.,
      0.,  0., 65., 0., 71., 0., 0.,   0., 77.,  0., 83., 0., 0.,  0.,
      89., 0., 95., 0., 0.,  0., 101., 0., 107., 0., 0.,  0.};
  const std::array<int, 4> in_shape = {{3, 6, 3, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x6x3x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,  0., 11., 0., 0.,  0., 17.,  0., 23.,  0., 0.,  0., 29., 0.,
      35., 0., 0.,  0., 41., 0., 47.,  0., 0.,   0., 53., 0., 59., 0.,
      0.,  0., 65., 0., 71., 0., 0.,   0., 77.,  0., 83., 0., 0.,  0.,
      89., 0., 95., 0., 0.,  0., 101., 0., 107., 0., 0.,  0.};
  const std::array<int, 4> in_shape = {{3, 6, 3, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x6x3x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,  0., 70.,  0., 0.,   0., 110., 0., 150., 0., 0.,   0., 190., 0.,
      230., 0., 0.,   0., 270., 0., 310., 0., 0.,   0., 350., 0., 390., 0.,
      0.,   0., 430., 0., 470., 0., 0.,   0., 510., 0., 550., 0., 0.,   0.,
      590., 0., 630., 0., 0.,   0., 670., 0., 710., 0., 0.,   0.};
  const std::array<int, 4> in_shape = {{3, 6, 3, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x6x3x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,  0., 70.,  0., 0.,   0., 110., 0., 150., 0., 0.,   0., 190., 0.,
      230., 0., 0.,   0., 270., 0., 310., 0., 0.,   0., 350., 0., 390., 0.,
      0.,   0., 430., 0., 470., 0., 0.,   0., 510., 0., 550., 0., 0.,   0.,
      590., 0., 630., 0., 0.,   0., 670., 0., 710., 0., 0.,   0.};
  const std::array<int, 4> in_shape = {{3, 6, 3, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x6x3x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,  2.,  0., 0., 2.,  4.,  0., 0., 0.,  0.,  0., 0., 3.,  6.,  0., 0.,
      4.,  8.,  0., 0., 0.,  0.,  0., 0., 5.,  10., 0., 0., 6.,  12., 0., 0.,
      0.,  0.,  0., 0., 7.,  14., 0., 0., 8.,  16., 0., 0., 0.,  0.,  0., 0.,
      9.,  18., 0., 0., 10., 20., 0., 0., 0.,  0.,  0., 0., 11., 22., 0., 0.,
      12., 24., 0., 0., 0.,  0.,  0., 0., 13., 26., 0., 0., 14., 28., 0., 0.,
      0.,  0.,  0., 0., 15., 30., 0., 0., 16., 32., 0., 0., 0.,  0.,  0., 0.,
      17., 34., 0., 0., 18., 36., 0., 0., 0.,  0.,  0., 0.};
  const std::array<int, 4> in_shape = {{3, 6, 3, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x6x3x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,  2.,  0., 0., 2.,  4.,  0., 0., 0.,  0.,  0., 0., 3.,  6.,  0., 0.,
      4.,  8.,  0., 0., 0.,  0.,  0., 0., 5.,  10., 0., 0., 6.,  12., 0., 0.,
      0.,  0.,  0., 0., 7.,  14., 0., 0., 8.,  16., 0., 0., 0.,  0.,  0., 0.,
      9.,  18., 0., 0., 10., 20., 0., 0., 0.,  0.,  0., 0., 11., 22., 0., 0.,
      12., 24., 0., 0., 0.,  0.,  0., 0., 13., 26., 0., 0., 14., 28., 0., 0.,
      0.,  0.,  0., 0., 15., 30., 0., 0., 16., 32., 0., 0., 0.,  0.,  0., 0.,
      17., 34., 0., 0., 18., 36., 0., 0., 0.,  0.,  0., 0.};
  const std::array<int, 4> in_shape = {{3, 6, 3, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x6x3x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,   11.,  0., 0., 11.,  25.,  0., 0., 0., 0., 0., 0.,
      17.,  39.,  0., 0., 23.,  53.,  0., 0., 0., 0., 0., 0.,
      29.,  67.,  0., 0., 35.,  81.,  0., 0., 0., 0., 0., 0.,
      41.,  95.,  0., 0., 47.,  109., 0., 0., 0., 0., 0., 0.,
      53.,  123., 0., 0., 59.,  137., 0., 0., 0., 0., 0., 0.,
      65.,  151., 0., 0., 71.,  165., 0., 0., 0., 0., 0., 0.,
      77.,  179., 0., 0., 83.,  193., 0., 0., 0., 0., 0., 0.,
      89.,  207., 0., 0., 95.,  221., 0., 0., 0., 0., 0., 0.,
      101., 235., 0., 0., 107., 249., 0., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{3, 6, 3, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x6x3x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,   11.,  0., 0., 11.,  25.,  0., 0., 0., 0., 0., 0.,
      17.,  39.,  0., 0., 23.,  53.,  0., 0., 0., 0., 0., 0.,
      29.,  67.,  0., 0., 35.,  81.,  0., 0., 0., 0., 0., 0.,
      41.,  95.,  0., 0., 47.,  109., 0., 0., 0., 0., 0., 0.,
      53.,  123., 0., 0., 59.,  137., 0., 0., 0., 0., 0., 0.,
      65.,  151., 0., 0., 71.,  165., 0., 0., 0., 0., 0., 0.,
      77.,  179., 0., 0., 83.,  193., 0., 0., 0., 0., 0., 0.,
      89.,  207., 0., 0., 95.,  221., 0., 0., 0., 0., 0., 0.,
      101., 235., 0., 0., 107., 249., 0., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{3, 6, 3, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x6x3x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,  70.,   0., 0., 70.,  174.,  0., 0., 0., 0., 0., 0.,
      110., 278.,  0., 0., 150., 382.,  0., 0., 0., 0., 0., 0.,
      190., 486.,  0., 0., 230., 590.,  0., 0., 0., 0., 0., 0.,
      270., 694.,  0., 0., 310., 798.,  0., 0., 0., 0., 0., 0.,
      350., 902.,  0., 0., 390., 1006., 0., 0., 0., 0., 0., 0.,
      430., 1110., 0., 0., 470., 1214., 0., 0., 0., 0., 0., 0.,
      510., 1318., 0., 0., 550., 1422., 0., 0., 0., 0., 0., 0.,
      590., 1526., 0., 0., 630., 1630., 0., 0., 0., 0., 0., 0.,
      670., 1734., 0., 0., 710., 1838., 0., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{3, 6, 3, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x6x3x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,  70.,   0., 0., 70.,  174.,  0., 0., 0., 0., 0., 0.,
      110., 278.,  0., 0., 150., 382.,  0., 0., 0., 0., 0., 0.,
      190., 486.,  0., 0., 230., 590.,  0., 0., 0., 0., 0., 0.,
      270., 694.,  0., 0., 310., 798.,  0., 0., 0., 0., 0., 0.,
      350., 902.,  0., 0., 390., 1006., 0., 0., 0., 0., 0., 0.,
      430., 1110., 0., 0., 470., 1214., 0., 0., 0., 0., 0., 0.,
      510., 1318., 0., 0., 550., 1422., 0., 0., 0., 0., 0., 0.,
      590., 1526., 0., 0., 630., 1630., 0., 0., 0., 0., 0., 0.,
      670., 1734., 0., 0., 710., 1838., 0., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{3, 6, 3, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x6x3x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,  2.,  3.,  4.,  0., 0., 0., 0., 2.,  4.,  6.,  8.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 3.,  6.,  9.,  12., 0., 0., 0., 0.,
      4.,  8.,  12., 16., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      5.,  10., 15., 20., 0., 0., 0., 0., 6.,  12., 18., 24., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 7.,  14., 21., 28., 0., 0., 0., 0.,
      8.,  16., 24., 32., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      9.,  18., 27., 36., 0., 0., 0., 0., 10., 20., 30., 40., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 11., 22., 33., 44., 0., 0., 0., 0.,
      12., 24., 36., 48., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      13., 26., 39., 52., 0., 0., 0., 0., 14., 28., 42., 56., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 15., 30., 45., 60., 0., 0., 0., 0.,
      16., 32., 48., 64., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      17., 34., 51., 68., 0., 0., 0., 0., 18., 36., 54., 72., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{3, 6, 3, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x6x3x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,  2.,  3.,  4.,  0., 0., 0., 0., 2.,  4.,  6.,  8.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 3.,  6.,  9.,  12., 0., 0., 0., 0.,
      4.,  8.,  12., 16., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      5.,  10., 15., 20., 0., 0., 0., 0., 6.,  12., 18., 24., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 7.,  14., 21., 28., 0., 0., 0., 0.,
      8.,  16., 24., 32., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      9.,  18., 27., 36., 0., 0., 0., 0., 10., 20., 30., 40., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 11., 22., 33., 44., 0., 0., 0., 0.,
      12., 24., 36., 48., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      13., 26., 39., 52., 0., 0., 0., 0., 14., 28., 42., 56., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 15., 30., 45., 60., 0., 0., 0., 0.,
      16., 32., 48., 64., 0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      17., 34., 51., 68., 0., 0., 0., 0., 18., 36., 54., 72., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{3, 6, 3, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x6x3x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,   11.,  17.,  23.,  0., 0., 0., 0., 11.,  25.,  39.,  53.,
      0.,   0.,   0.,   0.,   0., 0., 0., 0., 0.,   0.,   0.,   0.,
      17.,  39.,  61.,  83.,  0., 0., 0., 0., 23.,  53.,  83.,  113.,
      0.,   0.,   0.,   0.,   0., 0., 0., 0., 0.,   0.,   0.,   0.,
      29.,  67.,  105., 143., 0., 0., 0., 0., 35.,  81.,  127., 173.,
      0.,   0.,   0.,   0.,   0., 0., 0., 0., 0.,   0.,   0.,   0.,
      41.,  95.,  149., 203., 0., 0., 0., 0., 47.,  109., 171., 233.,
      0.,   0.,   0.,   0.,   0., 0., 0., 0., 0.,   0.,   0.,   0.,
      53.,  123., 193., 263., 0., 0., 0., 0., 59.,  137., 215., 293.,
      0.,   0.,   0.,   0.,   0., 0., 0., 0., 0.,   0.,   0.,   0.,
      65.,  151., 237., 323., 0., 0., 0., 0., 71.,  165., 259., 353.,
      0.,   0.,   0.,   0.,   0., 0., 0., 0., 0.,   0.,   0.,   0.,
      77.,  179., 281., 383., 0., 0., 0., 0., 83.,  193., 303., 413.,
      0.,   0.,   0.,   0.,   0., 0., 0., 0., 0.,   0.,   0.,   0.,
      89.,  207., 325., 443., 0., 0., 0., 0., 95.,  221., 347., 473.,
      0.,   0.,   0.,   0.,   0., 0., 0., 0., 0.,   0.,   0.,   0.,
      101., 235., 369., 503., 0., 0., 0., 0., 107., 249., 391., 533.,
      0.,   0.,   0.,   0.,   0., 0., 0., 0., 0.,   0.,   0.,   0.};
  const std::array<int, 4> in_shape = {{3, 6, 3, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x6x3x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,   11.,  17.,  23.,  0., 0., 0., 0., 11.,  25.,  39.,  53.,
      0.,   0.,   0.,   0.,   0., 0., 0., 0., 0.,   0.,   0.,   0.,
      17.,  39.,  61.,  83.,  0., 0., 0., 0., 23.,  53.,  83.,  113.,
      0.,   0.,   0.,   0.,   0., 0., 0., 0., 0.,   0.,   0.,   0.,
      29.,  67.,  105., 143., 0., 0., 0., 0., 35.,  81.,  127., 173.,
      0.,   0.,   0.,   0.,   0., 0., 0., 0., 0.,   0.,   0.,   0.,
      41.,  95.,  149., 203., 0., 0., 0., 0., 47.,  109., 171., 233.,
      0.,   0.,   0.,   0.,   0., 0., 0., 0., 0.,   0.,   0.,   0.,
      53.,  123., 193., 263., 0., 0., 0., 0., 59.,  137., 215., 293.,
      0.,   0.,   0.,   0.,   0., 0., 0., 0., 0.,   0.,   0.,   0.,
      65.,  151., 237., 323., 0., 0., 0., 0., 71.,  165., 259., 353.,
      0.,   0.,   0.,   0.,   0., 0., 0., 0., 0.,   0.,   0.,   0.,
      77.,  179., 281., 383., 0., 0., 0., 0., 83.,  193., 303., 413.,
      0.,   0.,   0.,   0.,   0., 0., 0., 0., 0.,   0.,   0.,   0.,
      89.,  207., 325., 443., 0., 0., 0., 0., 95.,  221., 347., 473.,
      0.,   0.,   0.,   0.,   0., 0., 0., 0., 0.,   0.,   0.,   0.,
      101., 235., 369., 503., 0., 0., 0., 0., 107., 249., 391., 533.,
      0.,   0.,   0.,   0.,   0., 0., 0., 0., 0.,   0.,   0.,   0.};
  const std::array<int, 4> in_shape = {{3, 6, 3, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x6x3x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,  70.,   110.,  150.,  0., 0., 0., 0., 70.,  174.,  278.,  382.,
      0.,   0.,    0.,    0.,    0., 0., 0., 0., 0.,   0.,    0.,    0.,
      110., 278.,  446.,  614.,  0., 0., 0., 0., 150., 382.,  614.,  846.,
      0.,   0.,    0.,    0.,    0., 0., 0., 0., 0.,   0.,    0.,    0.,
      190., 486.,  782.,  1078., 0., 0., 0., 0., 230., 590.,  950.,  1310.,
      0.,   0.,    0.,    0.,    0., 0., 0., 0., 0.,   0.,    0.,    0.,
      270., 694.,  1118., 1542., 0., 0., 0., 0., 310., 798.,  1286., 1774.,
      0.,   0.,    0.,    0.,    0., 0., 0., 0., 0.,   0.,    0.,    0.,
      350., 902.,  1454., 2006., 0., 0., 0., 0., 390., 1006., 1622., 2238.,
      0.,   0.,    0.,    0.,    0., 0., 0., 0., 0.,   0.,    0.,    0.,
      430., 1110., 1790., 2470., 0., 0., 0., 0., 470., 1214., 1958., 2702.,
      0.,   0.,    0.,    0.,    0., 0., 0., 0., 0.,   0.,    0.,    0.,
      510., 1318., 2126., 2934., 0., 0., 0., 0., 550., 1422., 2294., 3166.,
      0.,   0.,    0.,    0.,    0., 0., 0., 0., 0.,   0.,    0.,    0.,
      590., 1526., 2462., 3398., 0., 0., 0., 0., 630., 1630., 2630., 3630.,
      0.,   0.,    0.,    0.,    0., 0., 0., 0., 0.,   0.,    0.,    0.,
      670., 1734., 2798., 3862., 0., 0., 0., 0., 710., 1838., 2966., 4094.,
      0.,   0.,    0.,    0.,    0., 0., 0., 0., 0.,   0.,    0.,    0.};
  const std::array<int, 4> in_shape = {{3, 6, 3, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x6x3x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,  70.,   110.,  150.,  0., 0., 0., 0., 70.,  174.,  278.,  382.,
      0.,   0.,    0.,    0.,    0., 0., 0., 0., 0.,   0.,    0.,    0.,
      110., 278.,  446.,  614.,  0., 0., 0., 0., 150., 382.,  614.,  846.,
      0.,   0.,    0.,    0.,    0., 0., 0., 0., 0.,   0.,    0.,    0.,
      190., 486.,  782.,  1078., 0., 0., 0., 0., 230., 590.,  950.,  1310.,
      0.,   0.,    0.,    0.,    0., 0., 0., 0., 0.,   0.,    0.,    0.,
      270., 694.,  1118., 1542., 0., 0., 0., 0., 310., 798.,  1286., 1774.,
      0.,   0.,    0.,    0.,    0., 0., 0., 0., 0.,   0.,    0.,    0.,
      350., 902.,  1454., 2006., 0., 0., 0., 0., 390., 1006., 1622., 2238.,
      0.,   0.,    0.,    0.,    0., 0., 0., 0., 0.,   0.,    0.,    0.,
      430., 1110., 1790., 2470., 0., 0., 0., 0., 470., 1214., 1958., 2702.,
      0.,   0.,    0.,    0.,    0., 0., 0., 0., 0.,   0.,    0.,    0.,
      510., 1318., 2126., 2934., 0., 0., 0., 0., 550., 1422., 2294., 3166.,
      0.,   0.,    0.,    0.,    0., 0., 0., 0., 0.,   0.,    0.,    0.,
      590., 1526., 2462., 3398., 0., 0., 0., 0., 630., 1630., 2630., 3630.,
      0.,   0.,    0.,    0.,    0., 0., 0., 0., 0.,   0.,    0.,    0.,
      670., 1734., 2798., 3862., 0., 0., 0., 0., 710., 1838., 2966., 4094.,
      0.,   0.,    0.,    0.,    0., 0., 0., 0., 0.,   0.,    0.,    0.};
  const std::array<int, 4> in_shape = {{3, 6, 3, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x6x4x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1., 0., 2., 0.,  0.,  0.,  0.,  0., 3., 0., 4.,  0.,  0.,  0.,  0.,
      0., 5., 0., 6.,  0.,  0.,  0.,  0., 0., 7., 0.,  8.,  0.,  0.,  0.,
      0., 0., 9., 0.,  10., 0.,  0.,  0., 0., 0., 11., 0.,  12., 0.,  0.,
      0., 0., 0., 13., 0.,  14., 0.,  0., 0., 0., 0.,  15., 0.,  16., 0.,
      0., 0., 0., 0.,  17., 0.,  18., 0., 0., 0., 0.,  0.};
  const std::array<int, 4> in_shape = {{3, 6, 4, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x6x4x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1., 0., 2., 0.,  0.,  0.,  0.,  0., 3., 0., 4.,  0.,  0.,  0.,  0.,
      0., 5., 0., 6.,  0.,  0.,  0.,  0., 0., 7., 0.,  8.,  0.,  0.,  0.,
      0., 0., 9., 0.,  10., 0.,  0.,  0., 0., 0., 11., 0.,  12., 0.,  0.,
      0., 0., 0., 13., 0.,  14., 0.,  0., 0., 0., 0.,  15., 0.,  16., 0.,
      0., 0., 0., 0.,  17., 0.,  18., 0., 0., 0., 0.,  0.};
  const std::array<int, 4> in_shape = {{3, 6, 4, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x6x4x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5., 0.,  11., 0.,  0.,   0.,  0.,   0., 17., 0.,  23., 0.,  0.,  0.,  0.,
      0., 29., 0.,  35., 0.,   0.,  0.,   0., 0.,  41., 0.,  47., 0.,  0.,  0.,
      0., 0.,  53., 0.,  59.,  0.,  0.,   0., 0.,  0.,  65., 0.,  71., 0.,  0.,
      0., 0.,  0.,  77., 0.,   83., 0.,   0., 0.,  0.,  0.,  89., 0.,  95., 0.,
      0., 0.,  0.,  0.,  101., 0.,  107., 0., 0.,  0.,  0.,  0.};
  const std::array<int, 4> in_shape = {{3, 6, 4, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x6x4x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5., 0.,  11., 0.,  0.,   0.,  0.,   0., 17., 0.,  23., 0.,  0.,  0.,  0.,
      0., 29., 0.,  35., 0.,   0.,  0.,   0., 0.,  41., 0.,  47., 0.,  0.,  0.,
      0., 0.,  53., 0.,  59.,  0.,  0.,   0., 0.,  0.,  65., 0.,  71., 0.,  0.,
      0., 0.,  0.,  77., 0.,   83., 0.,   0., 0.,  0.,  0.,  89., 0.,  95., 0.,
      0., 0.,  0.,  0.,  101., 0.,  107., 0., 0.,  0.,  0.,  0.};
  const std::array<int, 4> in_shape = {{3, 6, 4, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x6x4x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,  0., 70.,  0., 0., 0., 0., 0., 110., 0., 150., 0., 0., 0., 0., 0.,
      190., 0., 230., 0., 0., 0., 0., 0., 270., 0., 310., 0., 0., 0., 0., 0.,
      350., 0., 390., 0., 0., 0., 0., 0., 430., 0., 470., 0., 0., 0., 0., 0.,
      510., 0., 550., 0., 0., 0., 0., 0., 590., 0., 630., 0., 0., 0., 0., 0.,
      670., 0., 710., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{3, 6, 4, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x6x4x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,  0., 70.,  0., 0., 0., 0., 0., 110., 0., 150., 0., 0., 0., 0., 0.,
      190., 0., 230., 0., 0., 0., 0., 0., 270., 0., 310., 0., 0., 0., 0., 0.,
      350., 0., 390., 0., 0., 0., 0., 0., 430., 0., 470., 0., 0., 0., 0., 0.,
      510., 0., 550., 0., 0., 0., 0., 0., 590., 0., 630., 0., 0., 0., 0., 0.,
      670., 0., 710., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{3, 6, 4, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x6x4x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,  2.,  0., 0., 2.,  4.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      3.,  6.,  0., 0., 4.,  8.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      5.,  10., 0., 0., 6.,  12., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      7.,  14., 0., 0., 8.,  16., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      9.,  18., 0., 0., 10., 20., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      11., 22., 0., 0., 12., 24., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      13., 26., 0., 0., 14., 28., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      15., 30., 0., 0., 16., 32., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      17., 34., 0., 0., 18., 36., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{3, 6, 4, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x6x4x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,  2.,  0., 0., 2.,  4.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      3.,  6.,  0., 0., 4.,  8.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      5.,  10., 0., 0., 6.,  12., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      7.,  14., 0., 0., 8.,  16., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      9.,  18., 0., 0., 10., 20., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      11., 22., 0., 0., 12., 24., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      13., 26., 0., 0., 14., 28., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      15., 30., 0., 0., 16., 32., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      17., 34., 0., 0., 18., 36., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{3, 6, 4, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x6x4x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,   11.,  0., 0., 11.,  25.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      17.,  39.,  0., 0., 23.,  53.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      29.,  67.,  0., 0., 35.,  81.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      41.,  95.,  0., 0., 47.,  109., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      53.,  123., 0., 0., 59.,  137., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      65.,  151., 0., 0., 71.,  165., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      77.,  179., 0., 0., 83.,  193., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      89.,  207., 0., 0., 95.,  221., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      101., 235., 0., 0., 107., 249., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{3, 6, 4, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x6x4x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,   11.,  0., 0., 11.,  25.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      17.,  39.,  0., 0., 23.,  53.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      29.,  67.,  0., 0., 35.,  81.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      41.,  95.,  0., 0., 47.,  109., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      53.,  123., 0., 0., 59.,  137., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      65.,  151., 0., 0., 71.,  165., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      77.,  179., 0., 0., 83.,  193., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      89.,  207., 0., 0., 95.,  221., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      101., 235., 0., 0., 107., 249., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{3, 6, 4, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x6x4x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,  70.,   0., 0., 70.,  174.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      110., 278.,  0., 0., 150., 382.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      190., 486.,  0., 0., 230., 590.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      270., 694.,  0., 0., 310., 798.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      350., 902.,  0., 0., 390., 1006., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      430., 1110., 0., 0., 470., 1214., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      510., 1318., 0., 0., 550., 1422., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      590., 1526., 0., 0., 630., 1630., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      670., 1734., 0., 0., 710., 1838., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{3, 6, 4, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x6x4x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,  70.,   0., 0., 70.,  174.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      110., 278.,  0., 0., 150., 382.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      190., 486.,  0., 0., 230., 590.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      270., 694.,  0., 0., 310., 798.,  0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      350., 902.,  0., 0., 390., 1006., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      430., 1110., 0., 0., 470., 1214., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      510., 1318., 0., 0., 550., 1422., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      590., 1526., 0., 0., 630., 1630., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
      670., 1734., 0., 0., 710., 1838., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{3, 6, 4, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x6x4x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,  2.,  3.,  4.,  0., 0., 0., 0., 2.,  4.,  6.,  8.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      3.,  6.,  9.,  12., 0., 0., 0., 0., 4.,  8.,  12., 16., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      5.,  10., 15., 20., 0., 0., 0., 0., 6.,  12., 18., 24., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      7.,  14., 21., 28., 0., 0., 0., 0., 8.,  16., 24., 32., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      9.,  18., 27., 36., 0., 0., 0., 0., 10., 20., 30., 40., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      11., 22., 33., 44., 0., 0., 0., 0., 12., 24., 36., 48., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      13., 26., 39., 52., 0., 0., 0., 0., 14., 28., 42., 56., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      15., 30., 45., 60., 0., 0., 0., 0., 16., 32., 48., 64., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      17., 34., 51., 68., 0., 0., 0., 0., 18., 36., 54., 72., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{3, 6, 4, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x6x4x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,  2.,  3.,  4.,  0., 0., 0., 0., 2.,  4.,  6.,  8.,  0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      3.,  6.,  9.,  12., 0., 0., 0., 0., 4.,  8.,  12., 16., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      5.,  10., 15., 20., 0., 0., 0., 0., 6.,  12., 18., 24., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      7.,  14., 21., 28., 0., 0., 0., 0., 8.,  16., 24., 32., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      9.,  18., 27., 36., 0., 0., 0., 0., 10., 20., 30., 40., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      11., 22., 33., 44., 0., 0., 0., 0., 12., 24., 36., 48., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      13., 26., 39., 52., 0., 0., 0., 0., 14., 28., 42., 56., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      15., 30., 45., 60., 0., 0., 0., 0., 16., 32., 48., 64., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.,
      17., 34., 51., 68., 0., 0., 0., 0., 18., 36., 54., 72., 0., 0., 0., 0.,
      0.,  0.,  0.,  0.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,  0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{3, 6, 4, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x6x4x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,   11.,  17.,  23.,  0.,   0.,   0.,   0.,   11., 25.,  39.,  53.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,  0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   17., 39.,  61.,  83.,
      0.,   0.,   0.,   0.,   23.,  53.,  83.,  113., 0.,  0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,  0.,   0.,   0.,
      0.,   0.,   0.,   0.,   29.,  67.,  105., 143., 0.,  0.,   0.,   0.,
      35.,  81.,  127., 173., 0.,   0.,   0.,   0.,   0.,  0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,  0.,   0.,   0.,
      41.,  95.,  149., 203., 0.,   0.,   0.,   0.,   47., 109., 171., 233.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,  0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   53., 123., 193., 263.,
      0.,   0.,   0.,   0.,   59.,  137., 215., 293., 0.,  0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,  0.,   0.,   0.,
      0.,   0.,   0.,   0.,   65.,  151., 237., 323., 0.,  0.,   0.,   0.,
      71.,  165., 259., 353., 0.,   0.,   0.,   0.,   0.,  0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,  0.,   0.,   0.,
      77.,  179., 281., 383., 0.,   0.,   0.,   0.,   83., 193., 303., 413.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,  0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   89., 207., 325., 443.,
      0.,   0.,   0.,   0.,   95.,  221., 347., 473., 0.,  0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,  0.,   0.,   0.,
      0.,   0.,   0.,   0.,   101., 235., 369., 503., 0.,  0.,   0.,   0.,
      107., 249., 391., 533., 0.,   0.,   0.,   0.,   0.,  0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,  0.,   0.,   0.};
  const std::array<int, 4> in_shape = {{3, 6, 4, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x6x4x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,   11.,  17.,  23.,  0.,   0.,   0.,   0.,   11., 25.,  39.,  53.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,  0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   17., 39.,  61.,  83.,
      0.,   0.,   0.,   0.,   23.,  53.,  83.,  113., 0.,  0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,  0.,   0.,   0.,
      0.,   0.,   0.,   0.,   29.,  67.,  105., 143., 0.,  0.,   0.,   0.,
      35.,  81.,  127., 173., 0.,   0.,   0.,   0.,   0.,  0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,  0.,   0.,   0.,
      41.,  95.,  149., 203., 0.,   0.,   0.,   0.,   47., 109., 171., 233.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,  0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   53., 123., 193., 263.,
      0.,   0.,   0.,   0.,   59.,  137., 215., 293., 0.,  0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,  0.,   0.,   0.,
      0.,   0.,   0.,   0.,   65.,  151., 237., 323., 0.,  0.,   0.,   0.,
      71.,  165., 259., 353., 0.,   0.,   0.,   0.,   0.,  0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,  0.,   0.,   0.,
      77.,  179., 281., 383., 0.,   0.,   0.,   0.,   83., 193., 303., 413.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,  0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   89., 207., 325., 443.,
      0.,   0.,   0.,   0.,   95.,  221., 347., 473., 0.,  0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,  0.,   0.,   0.,
      0.,   0.,   0.,   0.,   101., 235., 369., 503., 0.,  0.,   0.,   0.,
      107., 249., 391., 533., 0.,   0.,   0.,   0.,   0.,  0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,  0.,   0.,   0.};
  const std::array<int, 4> in_shape = {{3, 6, 4, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x6x4x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,   70.,   110.,  150.,  0.,    0.,    0.,    0.,    70.,   174.,
      278.,  382.,  0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    110.,  278.,  446.,  614.,  0.,    0.,    0.,    0.,
      150.,  382.,  614.,  846.,  0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    190.,  486.,  782.,  1078., 0.,    0.,
      0.,    0.,    230.,  590.,  950.,  1310., 0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    270.,  694.,  1118., 1542.,
      0.,    0.,    0.,    0.,    310.,  798.,  1286., 1774., 0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    350.,  902.,
      1454., 2006., 0.,    0.,    0.,    0.,    390.,  1006., 1622., 2238.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      430.,  1110., 1790., 2470., 0.,    0.,    0.,    0.,    470.,  1214.,
      1958., 2702., 0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    510.,  1318., 2126., 2934., 0.,    0.,    0.,    0.,
      550.,  1422., 2294., 3166., 0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    590.,  1526., 2462., 3398., 0.,    0.,
      0.,    0.,    630.,  1630., 2630., 3630., 0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    670.,  1734., 2798., 3862.,
      0.,    0.,    0.,    0.,    710.,  1838., 2966., 4094., 0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.};
  const std::array<int, 4> in_shape = {{3, 6, 4, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x6x4x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,   70.,   110.,  150.,  0.,    0.,    0.,    0.,    70.,   174.,
      278.,  382.,  0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    110.,  278.,  446.,  614.,  0.,    0.,    0.,    0.,
      150.,  382.,  614.,  846.,  0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    190.,  486.,  782.,  1078., 0.,    0.,
      0.,    0.,    230.,  590.,  950.,  1310., 0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    270.,  694.,  1118., 1542.,
      0.,    0.,    0.,    0.,    310.,  798.,  1286., 1774., 0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    350.,  902.,
      1454., 2006., 0.,    0.,    0.,    0.,    390.,  1006., 1622., 2238.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      430.,  1110., 1790., 2470., 0.,    0.,    0.,    0.,    470.,  1214.,
      1958., 2702., 0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    510.,  1318., 2126., 2934., 0.,    0.,    0.,    0.,
      550.,  1422., 2294., 3166., 0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    590.,  1526., 2462., 3398., 0.,    0.,
      0.,    0.,    630.,  1630., 2630., 3630., 0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    670.,  1734., 2798., 3862.,
      0.,    0.,    0.,    0.,    710.,  1838., 2966., 4094., 0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.};
  const std::array<int, 4> in_shape = {{3, 6, 4, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x6x6x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,  0., 2.,  0., 3.,  0., 0.,  0., 0.,  0., 0.,  0., 4.,  0., 5.,  0.,
      6.,  0., 0.,  0., 0.,  0., 0.,  0., 7.,  0., 8.,  0., 9.,  0., 0.,  0.,
      0.,  0., 0.,  0., 10., 0., 11., 0., 12., 0., 0.,  0., 0.,  0., 0.,  0.,
      13., 0., 14., 0., 15., 0., 0.,  0., 0.,  0., 0.,  0., 16., 0., 17., 0.,
      18., 0., 0.,  0., 0.,  0., 0.,  0., 19., 0., 20., 0., 21., 0., 0.,  0.,
      0.,  0., 0.,  0., 22., 0., 23., 0., 24., 0., 0.,  0., 0.,  0., 0.,  0.,
      25., 0., 26., 0., 27., 0., 0.,  0., 0.,  0., 0.,  0.};
  const std::array<int, 4> in_shape = {{3, 6, 6, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x6x6x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,  0., 2.,  0., 3.,  0., 0.,  0., 0.,  0., 0.,  0., 4.,  0., 5.,  0.,
      6.,  0., 0.,  0., 0.,  0., 0.,  0., 7.,  0., 8.,  0., 9.,  0., 0.,  0.,
      0.,  0., 0.,  0., 10., 0., 11., 0., 12., 0., 0.,  0., 0.,  0., 0.,  0.,
      13., 0., 14., 0., 15., 0., 0.,  0., 0.,  0., 0.,  0., 16., 0., 17., 0.,
      18., 0., 0.,  0., 0.,  0., 0.,  0., 19., 0., 20., 0., 21., 0., 0.,  0.,
      0.,  0., 0.,  0., 22., 0., 23., 0., 24., 0., 0.,  0., 0.,  0., 0.,  0.,
      25., 0., 26., 0., 27., 0., 0.,  0., 0.,  0., 0.,  0.};
  const std::array<int, 4> in_shape = {{3, 6, 6, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x6x6x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,   0., 11.,  0., 17.,  0., 0.,   0., 0.,   0., 0.,  0., 23.,  0.,
      29.,  0., 35.,  0., 0.,   0., 0.,   0., 0.,   0., 41., 0., 47.,  0.,
      53.,  0., 0.,   0., 0.,   0., 0.,   0., 59.,  0., 65., 0., 71.,  0.,
      0.,   0., 0.,   0., 0.,   0., 77.,  0., 83.,  0., 89., 0., 0.,   0.,
      0.,   0., 0.,   0., 95.,  0., 101., 0., 107., 0., 0.,  0., 0.,   0.,
      0.,   0., 113., 0., 119., 0., 125., 0., 0.,   0., 0.,  0., 0.,   0.,
      131., 0., 137., 0., 143., 0., 0.,   0., 0.,   0., 0.,  0., 149., 0.,
      155., 0., 161., 0., 0.,   0., 0.,   0., 0.,   0.};
  const std::array<int, 4> in_shape = {{3, 6, 6, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x6x6x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,   0., 11.,  0., 17.,  0., 0.,   0., 0.,   0., 0.,  0., 23.,  0.,
      29.,  0., 35.,  0., 0.,   0., 0.,   0., 0.,   0., 41., 0., 47.,  0.,
      53.,  0., 0.,   0., 0.,   0., 0.,   0., 59.,  0., 65., 0., 71.,  0.,
      0.,   0., 0.,   0., 0.,   0., 77.,  0., 83.,  0., 89., 0., 0.,   0.,
      0.,   0., 0.,   0., 95.,  0., 101., 0., 107., 0., 0.,  0., 0.,   0.,
      0.,   0., 113., 0., 119., 0., 125., 0., 0.,   0., 0.,  0., 0.,   0.,
      131., 0., 137., 0., 143., 0., 0.,   0., 0.,   0., 0.,  0., 149., 0.,
      155., 0., 161., 0., 0.,   0., 0.,   0., 0.,   0.};
  const std::array<int, 4> in_shape = {{3, 6, 6, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x6x6x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,   0., 70.,   0., 110., 0., 0.,   0., 0.,   0., 0.,   0., 150., 0.,
      190.,  0., 230.,  0., 0.,   0., 0.,   0., 0.,   0., 270., 0., 310., 0.,
      350.,  0., 0.,    0., 0.,   0., 0.,   0., 390., 0., 430., 0., 470., 0.,
      0.,    0., 0.,    0., 0.,   0., 510., 0., 550., 0., 590., 0., 0.,   0.,
      0.,    0., 0.,    0., 630., 0., 670., 0., 710., 0., 0.,   0., 0.,   0.,
      0.,    0., 750.,  0., 790., 0., 830., 0., 0.,   0., 0.,   0., 0.,   0.,
      870.,  0., 910.,  0., 950., 0., 0.,   0., 0.,   0., 0.,   0., 990., 0.,
      1030., 0., 1070., 0., 0.,   0., 0.,   0., 0.,   0.};
  const std::array<int, 4> in_shape = {{3, 6, 6, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x6x6x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,   0., 70.,   0., 110., 0., 0.,   0., 0.,   0., 0.,   0., 150., 0.,
      190.,  0., 230.,  0., 0.,   0., 0.,   0., 0.,   0., 270., 0., 310., 0.,
      350.,  0., 0.,    0., 0.,   0., 0.,   0., 390., 0., 430., 0., 470., 0.,
      0.,    0., 0.,    0., 0.,   0., 510., 0., 550., 0., 590., 0., 0.,   0.,
      0.,    0., 0.,    0., 630., 0., 670., 0., 710., 0., 0.,   0., 0.,   0.,
      0.,    0., 750.,  0., 790., 0., 830., 0., 0.,   0., 0.,   0., 0.,   0.,
      870.,  0., 910.,  0., 950., 0., 0.,   0., 0.,   0., 0.,   0., 990., 0.,
      1030., 0., 1070., 0., 0.,   0., 0.,   0., 0.,   0.};
  const std::array<int, 4> in_shape = {{3, 6, 6, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x6x6x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,  2.,  0., 0., 2.,  4.,  0., 0., 3.,  6.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 4.,  8.,  0., 0., 5.,  10., 0., 0.,
      6.,  12., 0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      7.,  14., 0., 0., 8.,  16., 0., 0., 9.,  18., 0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 10., 20., 0., 0., 11., 22., 0., 0.,
      12., 24., 0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      13., 26., 0., 0., 14., 28., 0., 0., 15., 30., 0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 16., 32., 0., 0., 17., 34., 0., 0.,
      18., 36., 0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      19., 38., 0., 0., 20., 40., 0., 0., 21., 42., 0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 22., 44., 0., 0., 23., 46., 0., 0.,
      24., 48., 0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      25., 50., 0., 0., 26., 52., 0., 0., 27., 54., 0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0.};
  const std::array<int, 4> in_shape = {{3, 6, 6, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x6x6x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,  2.,  0., 0., 2.,  4.,  0., 0., 3.,  6.,  0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 4.,  8.,  0., 0., 5.,  10., 0., 0.,
      6.,  12., 0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      7.,  14., 0., 0., 8.,  16., 0., 0., 9.,  18., 0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 10., 20., 0., 0., 11., 22., 0., 0.,
      12., 24., 0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      13., 26., 0., 0., 14., 28., 0., 0., 15., 30., 0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 16., 32., 0., 0., 17., 34., 0., 0.,
      18., 36., 0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      19., 38., 0., 0., 20., 40., 0., 0., 21., 42., 0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0., 22., 44., 0., 0., 23., 46., 0., 0.,
      24., 48., 0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0., 0.,  0.,  0., 0.,
      25., 50., 0., 0., 26., 52., 0., 0., 27., 54., 0., 0., 0.,  0.,  0., 0.,
      0.,  0.,  0., 0., 0.,  0.,  0., 0.};
  const std::array<int, 4> in_shape = {{3, 6, 6, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x6x6x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,   11.,  0., 0., 11.,  25.,  0., 0., 17.,  39.,  0., 0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0., 0.,
      23.,  53.,  0., 0., 29.,  67.,  0., 0., 35.,  81.,  0., 0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0., 0.,
      41.,  95.,  0., 0., 47.,  109., 0., 0., 53.,  123., 0., 0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0., 0.,
      59.,  137., 0., 0., 65.,  151., 0., 0., 71.,  165., 0., 0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0., 0.,
      77.,  179., 0., 0., 83.,  193., 0., 0., 89.,  207., 0., 0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0., 0.,
      95.,  221., 0., 0., 101., 235., 0., 0., 107., 249., 0., 0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0., 0.,
      113., 263., 0., 0., 119., 277., 0., 0., 125., 291., 0., 0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0., 0.,
      131., 305., 0., 0., 137., 319., 0., 0., 143., 333., 0., 0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0., 0.,
      149., 347., 0., 0., 155., 361., 0., 0., 161., 375., 0., 0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0., 0.};
  const std::array<int, 4> in_shape = {{3, 6, 6, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x6x6x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,   11.,  0., 0., 11.,  25.,  0., 0., 17.,  39.,  0., 0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0., 0.,
      23.,  53.,  0., 0., 29.,  67.,  0., 0., 35.,  81.,  0., 0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0., 0.,
      41.,  95.,  0., 0., 47.,  109., 0., 0., 53.,  123., 0., 0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0., 0.,
      59.,  137., 0., 0., 65.,  151., 0., 0., 71.,  165., 0., 0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0., 0.,
      77.,  179., 0., 0., 83.,  193., 0., 0., 89.,  207., 0., 0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0., 0.,
      95.,  221., 0., 0., 101., 235., 0., 0., 107., 249., 0., 0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0., 0.,
      113., 263., 0., 0., 119., 277., 0., 0., 125., 291., 0., 0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0., 0.,
      131., 305., 0., 0., 137., 319., 0., 0., 143., 333., 0., 0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0., 0.,
      149., 347., 0., 0., 155., 361., 0., 0., 161., 375., 0., 0.,
      0.,   0.,   0., 0., 0.,   0.,   0., 0., 0.,   0.,   0., 0.};
  const std::array<int, 4> in_shape = {{3, 6, 6, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x6x6x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,  70.,   0., 0., 70.,   174.,  0., 0., 110.,  278.,  0., 0.,
      0.,   0.,    0., 0., 0.,    0.,    0., 0., 0.,    0.,    0., 0.,
      150., 382.,  0., 0., 190.,  486.,  0., 0., 230.,  590.,  0., 0.,
      0.,   0.,    0., 0., 0.,    0.,    0., 0., 0.,    0.,    0., 0.,
      270., 694.,  0., 0., 310.,  798.,  0., 0., 350.,  902.,  0., 0.,
      0.,   0.,    0., 0., 0.,    0.,    0., 0., 0.,    0.,    0., 0.,
      390., 1006., 0., 0., 430.,  1110., 0., 0., 470.,  1214., 0., 0.,
      0.,   0.,    0., 0., 0.,    0.,    0., 0., 0.,    0.,    0., 0.,
      510., 1318., 0., 0., 550.,  1422., 0., 0., 590.,  1526., 0., 0.,
      0.,   0.,    0., 0., 0.,    0.,    0., 0., 0.,    0.,    0., 0.,
      630., 1630., 0., 0., 670.,  1734., 0., 0., 710.,  1838., 0., 0.,
      0.,   0.,    0., 0., 0.,    0.,    0., 0., 0.,    0.,    0., 0.,
      750., 1942., 0., 0., 790.,  2046., 0., 0., 830.,  2150., 0., 0.,
      0.,   0.,    0., 0., 0.,    0.,    0., 0., 0.,    0.,    0., 0.,
      870., 2254., 0., 0., 910.,  2358., 0., 0., 950.,  2462., 0., 0.,
      0.,   0.,    0., 0., 0.,    0.,    0., 0., 0.,    0.,    0., 0.,
      990., 2566., 0., 0., 1030., 2670., 0., 0., 1070., 2774., 0., 0.,
      0.,   0.,    0., 0., 0.,    0.,    0., 0., 0.,    0.,    0., 0.};
  const std::array<int, 4> in_shape = {{3, 6, 6, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x6x6x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,  70.,   0., 0., 70.,   174.,  0., 0., 110.,  278.,  0., 0.,
      0.,   0.,    0., 0., 0.,    0.,    0., 0., 0.,    0.,    0., 0.,
      150., 382.,  0., 0., 190.,  486.,  0., 0., 230.,  590.,  0., 0.,
      0.,   0.,    0., 0., 0.,    0.,    0., 0., 0.,    0.,    0., 0.,
      270., 694.,  0., 0., 310.,  798.,  0., 0., 350.,  902.,  0., 0.,
      0.,   0.,    0., 0., 0.,    0.,    0., 0., 0.,    0.,    0., 0.,
      390., 1006., 0., 0., 430.,  1110., 0., 0., 470.,  1214., 0., 0.,
      0.,   0.,    0., 0., 0.,    0.,    0., 0., 0.,    0.,    0., 0.,
      510., 1318., 0., 0., 550.,  1422., 0., 0., 590.,  1526., 0., 0.,
      0.,   0.,    0., 0., 0.,    0.,    0., 0., 0.,    0.,    0., 0.,
      630., 1630., 0., 0., 670.,  1734., 0., 0., 710.,  1838., 0., 0.,
      0.,   0.,    0., 0., 0.,    0.,    0., 0., 0.,    0.,    0., 0.,
      750., 1942., 0., 0., 790.,  2046., 0., 0., 830.,  2150., 0., 0.,
      0.,   0.,    0., 0., 0.,    0.,    0., 0., 0.,    0.,    0., 0.,
      870., 2254., 0., 0., 910.,  2358., 0., 0., 950.,  2462., 0., 0.,
      0.,   0.,    0., 0., 0.,    0.,    0., 0., 0.,    0.,    0., 0.,
      990., 2566., 0., 0., 1030., 2670., 0., 0., 1070., 2774., 0., 0.,
      0.,   0.,    0., 0., 0.,    0.,    0., 0., 0.,    0.,    0., 0.};
  const std::array<int, 4> in_shape = {{3, 6, 6, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x6x6x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,  2.,  3.,  4.,   0., 0., 0., 0., 2.,  4.,  6.,  8.,   0., 0., 0., 0.,
      3.,  6.,  9.,  12.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,   0., 0., 0., 0.,
      0.,  0.,  0.,  0.,   0., 0., 0., 0., 0.,  0.,  0.,  0.,   0., 0., 0., 0.,
      4.,  8.,  12., 16.,  0., 0., 0., 0., 5.,  10., 15., 20.,  0., 0., 0., 0.,
      6.,  12., 18., 24.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,   0., 0., 0., 0.,
      0.,  0.,  0.,  0.,   0., 0., 0., 0., 0.,  0.,  0.,  0.,   0., 0., 0., 0.,
      7.,  14., 21., 28.,  0., 0., 0., 0., 8.,  16., 24., 32.,  0., 0., 0., 0.,
      9.,  18., 27., 36.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,   0., 0., 0., 0.,
      0.,  0.,  0.,  0.,   0., 0., 0., 0., 0.,  0.,  0.,  0.,   0., 0., 0., 0.,
      10., 20., 30., 40.,  0., 0., 0., 0., 11., 22., 33., 44.,  0., 0., 0., 0.,
      12., 24., 36., 48.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,   0., 0., 0., 0.,
      0.,  0.,  0.,  0.,   0., 0., 0., 0., 0.,  0.,  0.,  0.,   0., 0., 0., 0.,
      13., 26., 39., 52.,  0., 0., 0., 0., 14., 28., 42., 56.,  0., 0., 0., 0.,
      15., 30., 45., 60.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,   0., 0., 0., 0.,
      0.,  0.,  0.,  0.,   0., 0., 0., 0., 0.,  0.,  0.,  0.,   0., 0., 0., 0.,
      16., 32., 48., 64.,  0., 0., 0., 0., 17., 34., 51., 68.,  0., 0., 0., 0.,
      18., 36., 54., 72.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,   0., 0., 0., 0.,
      0.,  0.,  0.,  0.,   0., 0., 0., 0., 0.,  0.,  0.,  0.,   0., 0., 0., 0.,
      19., 38., 57., 76.,  0., 0., 0., 0., 20., 40., 60., 80.,  0., 0., 0., 0.,
      21., 42., 63., 84.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,   0., 0., 0., 0.,
      0.,  0.,  0.,  0.,   0., 0., 0., 0., 0.,  0.,  0.,  0.,   0., 0., 0., 0.,
      22., 44., 66., 88.,  0., 0., 0., 0., 23., 46., 69., 92.,  0., 0., 0., 0.,
      24., 48., 72., 96.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,   0., 0., 0., 0.,
      0.,  0.,  0.,  0.,   0., 0., 0., 0., 0.,  0.,  0.,  0.,   0., 0., 0., 0.,
      25., 50., 75., 100., 0., 0., 0., 0., 26., 52., 78., 104., 0., 0., 0., 0.,
      27., 54., 81., 108., 0., 0., 0., 0., 0.,  0.,  0.,  0.,   0., 0., 0., 0.,
      0.,  0.,  0.,  0.,   0., 0., 0., 0., 0.,  0.,  0.,  0.,   0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{3, 6, 6, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x6x6x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,  2.,  3.,  4.,   0., 0., 0., 0., 2.,  4.,  6.,  8.,   0., 0., 0., 0.,
      3.,  6.,  9.,  12.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,   0., 0., 0., 0.,
      0.,  0.,  0.,  0.,   0., 0., 0., 0., 0.,  0.,  0.,  0.,   0., 0., 0., 0.,
      4.,  8.,  12., 16.,  0., 0., 0., 0., 5.,  10., 15., 20.,  0., 0., 0., 0.,
      6.,  12., 18., 24.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,   0., 0., 0., 0.,
      0.,  0.,  0.,  0.,   0., 0., 0., 0., 0.,  0.,  0.,  0.,   0., 0., 0., 0.,
      7.,  14., 21., 28.,  0., 0., 0., 0., 8.,  16., 24., 32.,  0., 0., 0., 0.,
      9.,  18., 27., 36.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,   0., 0., 0., 0.,
      0.,  0.,  0.,  0.,   0., 0., 0., 0., 0.,  0.,  0.,  0.,   0., 0., 0., 0.,
      10., 20., 30., 40.,  0., 0., 0., 0., 11., 22., 33., 44.,  0., 0., 0., 0.,
      12., 24., 36., 48.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,   0., 0., 0., 0.,
      0.,  0.,  0.,  0.,   0., 0., 0., 0., 0.,  0.,  0.,  0.,   0., 0., 0., 0.,
      13., 26., 39., 52.,  0., 0., 0., 0., 14., 28., 42., 56.,  0., 0., 0., 0.,
      15., 30., 45., 60.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,   0., 0., 0., 0.,
      0.,  0.,  0.,  0.,   0., 0., 0., 0., 0.,  0.,  0.,  0.,   0., 0., 0., 0.,
      16., 32., 48., 64.,  0., 0., 0., 0., 17., 34., 51., 68.,  0., 0., 0., 0.,
      18., 36., 54., 72.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,   0., 0., 0., 0.,
      0.,  0.,  0.,  0.,   0., 0., 0., 0., 0.,  0.,  0.,  0.,   0., 0., 0., 0.,
      19., 38., 57., 76.,  0., 0., 0., 0., 20., 40., 60., 80.,  0., 0., 0., 0.,
      21., 42., 63., 84.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,   0., 0., 0., 0.,
      0.,  0.,  0.,  0.,   0., 0., 0., 0., 0.,  0.,  0.,  0.,   0., 0., 0., 0.,
      22., 44., 66., 88.,  0., 0., 0., 0., 23., 46., 69., 92.,  0., 0., 0., 0.,
      24., 48., 72., 96.,  0., 0., 0., 0., 0.,  0.,  0.,  0.,   0., 0., 0., 0.,
      0.,  0.,  0.,  0.,   0., 0., 0., 0., 0.,  0.,  0.,  0.,   0., 0., 0., 0.,
      25., 50., 75., 100., 0., 0., 0., 0., 26., 52., 78., 104., 0., 0., 0., 0.,
      27., 54., 81., 108., 0., 0., 0., 0., 0.,  0.,  0.,  0.,   0., 0., 0., 0.,
      0.,  0.,  0.,  0.,   0., 0., 0., 0., 0.,  0.,  0.,  0.,   0., 0., 0., 0.};
  const std::array<int, 4> in_shape = {{3, 6, 6, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x6x6x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,   11.,  17.,  23.,  0.,   0.,   0.,   0.,   11.,  25.,  39.,  53.,
      0.,   0.,   0.,   0.,   17.,  39.,  61.,  83.,  0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      23.,  53.,  83.,  113., 0.,   0.,   0.,   0.,   29.,  67.,  105., 143.,
      0.,   0.,   0.,   0.,   35.,  81.,  127., 173., 0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      41.,  95.,  149., 203., 0.,   0.,   0.,   0.,   47.,  109., 171., 233.,
      0.,   0.,   0.,   0.,   53.,  123., 193., 263., 0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      59.,  137., 215., 293., 0.,   0.,   0.,   0.,   65.,  151., 237., 323.,
      0.,   0.,   0.,   0.,   71.,  165., 259., 353., 0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      77.,  179., 281., 383., 0.,   0.,   0.,   0.,   83.,  193., 303., 413.,
      0.,   0.,   0.,   0.,   89.,  207., 325., 443., 0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      95.,  221., 347., 473., 0.,   0.,   0.,   0.,   101., 235., 369., 503.,
      0.,   0.,   0.,   0.,   107., 249., 391., 533., 0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      113., 263., 413., 563., 0.,   0.,   0.,   0.,   119., 277., 435., 593.,
      0.,   0.,   0.,   0.,   125., 291., 457., 623., 0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      131., 305., 479., 653., 0.,   0.,   0.,   0.,   137., 319., 501., 683.,
      0.,   0.,   0.,   0.,   143., 333., 523., 713., 0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      149., 347., 545., 743., 0.,   0.,   0.,   0.,   155., 361., 567., 773.,
      0.,   0.,   0.,   0.,   161., 375., 589., 803., 0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.};
  const std::array<int, 4> in_shape = {{3, 6, 6, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x6x6x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,   11.,  17.,  23.,  0.,   0.,   0.,   0.,   11.,  25.,  39.,  53.,
      0.,   0.,   0.,   0.,   17.,  39.,  61.,  83.,  0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      23.,  53.,  83.,  113., 0.,   0.,   0.,   0.,   29.,  67.,  105., 143.,
      0.,   0.,   0.,   0.,   35.,  81.,  127., 173., 0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      41.,  95.,  149., 203., 0.,   0.,   0.,   0.,   47.,  109., 171., 233.,
      0.,   0.,   0.,   0.,   53.,  123., 193., 263., 0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      59.,  137., 215., 293., 0.,   0.,   0.,   0.,   65.,  151., 237., 323.,
      0.,   0.,   0.,   0.,   71.,  165., 259., 353., 0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      77.,  179., 281., 383., 0.,   0.,   0.,   0.,   83.,  193., 303., 413.,
      0.,   0.,   0.,   0.,   89.,  207., 325., 443., 0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      95.,  221., 347., 473., 0.,   0.,   0.,   0.,   101., 235., 369., 503.,
      0.,   0.,   0.,   0.,   107., 249., 391., 533., 0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      113., 263., 413., 563., 0.,   0.,   0.,   0.,   119., 277., 435., 593.,
      0.,   0.,   0.,   0.,   125., 291., 457., 623., 0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      131., 305., 479., 653., 0.,   0.,   0.,   0.,   137., 319., 501., 683.,
      0.,   0.,   0.,   0.,   143., 333., 523., 713., 0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      149., 347., 545., 743., 0.,   0.,   0.,   0.,   155., 361., 567., 773.,
      0.,   0.,   0.,   0.,   161., 375., 589., 803., 0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.};
  const std::array<int, 4> in_shape = {{3, 6, 6, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, SAME3x6x6x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,   70.,   110.,  150.,  0.,    0.,    0.,    0.,    70.,   174.,
      278.,  382.,  0.,    0.,    0.,    0.,    110.,  278.,  446.,  614.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    150.,  382.,
      614.,  846.,  0.,    0.,    0.,    0.,    190.,  486.,  782.,  1078.,
      0.,    0.,    0.,    0.,    230.,  590.,  950.,  1310., 0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    270.,  694.,  1118., 1542.,
      0.,    0.,    0.,    0.,    310.,  798.,  1286., 1774., 0.,    0.,
      0.,    0.,    350.,  902.,  1454., 2006., 0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    390.,  1006., 1622., 2238., 0.,    0.,
      0.,    0.,    430.,  1110., 1790., 2470., 0.,    0.,    0.,    0.,
      470.,  1214., 1958., 2702., 0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    510.,  1318., 2126., 2934., 0.,    0.,    0.,    0.,
      550.,  1422., 2294., 3166., 0.,    0.,    0.,    0.,    590.,  1526.,
      2462., 3398., 0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      630.,  1630., 2630., 3630., 0.,    0.,    0.,    0.,    670.,  1734.,
      2798., 3862., 0.,    0.,    0.,    0.,    710.,  1838., 2966., 4094.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    750.,  1942.,
      3134., 4326., 0.,    0.,    0.,    0.,    790.,  2046., 3302., 4558.,
      0.,    0.,    0.,    0.,    830.,  2150., 3470., 4790., 0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    870.,  2254., 3638., 5022.,
      0.,    0.,    0.,    0.,    910.,  2358., 3806., 5254., 0.,    0.,
      0.,    0.,    950.,  2462., 3974., 5486., 0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    990.,  2566., 4142., 5718., 0.,    0.,
      0.,    0.,    1030., 2670., 4310., 5950., 0.,    0.,    0.,    0.,
      1070., 2774., 4478., 6182., 0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.};
  const std::array<int, 4> in_shape = {{3, 6, 6, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow1Stride2, VALID3x6x6x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,   70.,   110.,  150.,  0.,    0.,    0.,    0.,    70.,   174.,
      278.,  382.,  0.,    0.,    0.,    0.,    110.,  278.,  446.,  614.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    150.,  382.,
      614.,  846.,  0.,    0.,    0.,    0.,    190.,  486.,  782.,  1078.,
      0.,    0.,    0.,    0.,    230.,  590.,  950.,  1310., 0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    270.,  694.,  1118., 1542.,
      0.,    0.,    0.,    0.,    310.,  798.,  1286., 1774., 0.,    0.,
      0.,    0.,    350.,  902.,  1454., 2006., 0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    390.,  1006., 1622., 2238., 0.,    0.,
      0.,    0.,    430.,  1110., 1790., 2470., 0.,    0.,    0.,    0.,
      470.,  1214., 1958., 2702., 0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    510.,  1318., 2126., 2934., 0.,    0.,    0.,    0.,
      550.,  1422., 2294., 3166., 0.,    0.,    0.,    0.,    590.,  1526.,
      2462., 3398., 0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      630.,  1630., 2630., 3630., 0.,    0.,    0.,    0.,    670.,  1734.,
      2798., 3862., 0.,    0.,    0.,    0.,    710.,  1838., 2966., 4094.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    750.,  1942.,
      3134., 4326., 0.,    0.,    0.,    0.,    790.,  2046., 3302., 4558.,
      0.,    0.,    0.,    0.,    830.,  2150., 3470., 4790., 0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    870.,  2254., 3638., 5022.,
      0.,    0.,    0.,    0.,    910.,  2358., 3806., 5254., 0.,    0.,
      0.,    0.,    950.,  2462., 3974., 5486., 0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    990.,  2566., 4142., 5718., 0.,    0.,
      0.,    0.,    1030., 2670., 4310., 5950., 0.,    0.,    0.,    0.,
      1070., 2774., 4478., 6182., 0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.};
  const std::array<int, 4> in_shape = {{3, 6, 6, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, features, padding,
                                max_input_val);
}